기본 Linux 실행 파일 경로가 표시되지 않습니다.

기본 Linux 실행 파일 경로가 표시되지 않습니다.

ls명령 이나 명령을 cd사용하는 것과 같은 기본 명령의 경로를 찾으려고 합니다 which. 에 대한 경로는 표시되지만 ls에 대한 경로는 표시되지 않습니다 cd. 물론 두 명령 모두 잘 작동합니다. 어떤 아이디어?

$ which ls
/bin/ls
$ which cd
$

답변1

cd항상 쉘 자체에서 제공하는 내장 명령입니다. 외부 유틸리티로는 검색되지 않습니다. 이는 Linux에만 국한된 것이 아닙니다.

로부터cdPOSIX 표준의 "애플리케이션 사용법" 섹션:

현재 쉘 실행 환경에 영향을 주기 때문에 cd항상 쉘 정규 내장으로 제공됩니다. 다음 중 하나와 같이 서브셸 또는 별도의 유틸리티 실행 환경에서 호출되는 경우:

(cd /tmp)
nohup cd
find . -exec cd {} \;

호출자 환경의 작업 디렉터리에는 영향을 주지 않습니다.


명령 경로를 찾는 이식 가능한 방법은 다음을 사용하는 것입니다 command -v.

bash-4.4$ command -v ls
/bin/ls
bash-4.4$ command -v cd
cd

type약간 더 장황해질 것입니다:

bash-4.4$ type ls
ls is /bin/ls
bash-4.4$ type cd
cd is a shell builtin

또한보십시오 "" which "를 사용하지 않는 이유는 무엇입니까? 그러면 무엇을 사용해야 할까요?"

관련 정보