ls
명령 이나 명령을 cd
사용하는 것과 같은 기본 명령의 경로를 찾으려고 합니다 which
. 에 대한 경로는 표시되지만 ls
에 대한 경로는 표시되지 않습니다 cd
. 물론 두 명령 모두 잘 작동합니다. 어떤 아이디어?
$ which ls
/bin/ls
$ which cd
$
답변1
cd
항상 쉘 자체에서 제공하는 내장 명령입니다. 외부 유틸리티로는 검색되지 않습니다. 이는 Linux에만 국한된 것이 아닙니다.
로부터cd
POSIX 표준의 "애플리케이션 사용법" 섹션:
현재 쉘 실행 환경에 영향을 주기 때문에
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