여기에 태그된 답변을 읽고 있습니다.내장 명령과 비 내장 명령의 차이점은 무엇입니까?
여기서 그는 이렇게 말합니다.
내장 명령은 다른 프로그램을 로드하고 실행하라는 요청으로 해석하는 것이 아니라 쉘이 자체적으로 실행하는 단순한 명령입니다. 여기에는 두 가지 주요 효과가 있습니다. 첫째, 프로그램을 로드하고 실행하는 데 시간이 걸리기 때문에 일반적으로 속도가 더 빠릅니다. 물론 명령 실행 시간이 길어질수록 전체 실행 시간에 비해 로드 시간이 덜 중요해집니다.
cd
이는 우리가 쉘 내장 명령(예: or ) 을 실행할 때 echo
쉘(bash라고 가정)이 이를 cd
우리가 얻은 경로(/usr/bin/cd)를 사용하여 프로그램을 실행하는 것과 다르게 해석한다는 것을 의미합니까 which cd
?
나는 우리가 실행한 모든 명령이 해당 프로그램을 실행할 것이라고 생각했을 것입니다. 이 답변을 보니 혼란스러웠습니다.
쉘이 프로그램이나 파일을 실행하지 않는 경우에도 which cd
프로그램 경로가 계속 반환되는 이유는 무엇입니까? 이것은 우리가 echo hi
command를 실행할 때 env 변수의 경로를 검색하여 PATH
이름으로 프로그램을 실행한다는 것을 의미합니까 echo
?
이것을 설명해주세요....
답변1
쉘은 어떤 유틸리티가 내장되어 있는지 알고 있습니다.
쉘은 bash
다음 단계를 사용하여 명령을 찾습니다(별명 확장을 수행한 후).
- 명령에 슬래시가 포함되어 있지 않은 경우
- 명령이 쉘 함수인 경우 이 함수가 호출됩니다.
- 그렇지 않고 내장된 명령에 해당하면 해당 명령이 사용됩니다.
- 그렇지 않으면 쉘은
$PATH
해당 이름을 가진 실행 파일을 검색하고 발견되면 실행합니다.
- 명령에 슬래시가 포함되어 있으면 지정된 파일이 실행됩니다.
이는 셸이 실행 파일을 검색하는 유일한 시간 $PATH
은 명령에 슬래시가 포함되어 있지 않고, 셸 기능이 아니며, 내장 유틸리티가 아닌 경우라는 것을 의미합니다. 또한 쉘이 bash
실행되지 않습니다.물리적주어진 명령이 해시된 경우 디렉토리가 검색됩니다( 참조 help hash
) bash
.