나는 읽었다'어느', 하지만 모두그러나 나는 그 차이를 정말로 이해할 수 없습니다. 저는 64비트 debian-buster에서 zsh 5.4.2를 실행하고 있습니다. which 와 whence 는 모두 쉘 내장 함수입니다.
사람들은 어디에서 어느 쪽이 더 적절한지 또는 그 반대인지 지적할 수 있습니까?
/home/shirish> zsh --version
zsh 5.4.2 (x86_64-debian-linux-gnu)
/home/shirish> type -a which
which is a shell builtin
which is /usr/bin/which
which is /bin/which
/home/shirish> type -a whence
whence is a shell builtin
답변1
which
csh 명령( csh
귀하의 명령을 읽는 스크립트 ~/.cshrc
), s에 대한 whence
Korn 쉘 csh
의 응답 which
, type
Bourne 쉘 명령, command -v/V
POSIX 명령...
zsh
ksh
일부 확장을 구현했지만 csh 중독자 및 POSIX 준수를 위한 별칭 whence
도 제공했습니다 . 이는 동일한 명령이지만 기본 동작이 다릅니다.which
type
command -v/V
which
)를whence -c
위한 것c
입니다csh
type
예whence -v
(자세한 내용은whence
)where
예whence -ca
- POSIX는
command -v
다음과 같다whence
- POSIX는
command -V
다음과 같다whence -v
자세한 내용은 다음에서 확인할 수 있습니다(약간 혼란스럽기는 하지만 죄송합니다)." which "를 사용하지 않는 이유는 무엇입니까? 그러면 무엇을 사용해야 합니까?
답변2
[-vcfpam] 이름은 어디서 나온 걸까요...
각 이름에 대해 명령 이름으로 사용될 경우 어떻게 해석되는지 표시하십시오. 이 -v
플래그는 더 자세한 보고서를 생성합니다. 이 -c
플래그는 csh와 유사한 형식으로 결과를 인쇄하며 -v
. 이 -f
플래그를 사용하면 쉘 함수의 내용이 표시되지만 -c
이 플래그를 사용하지 않으면 발생하지 않습니다. 이 -p
플래그는 별명, 예약어, 쉘 함수 또는 내장 함수인 경우에도 이름에 대한 경로 검색을 수행합니다. 이 -a
플래그는 전체 명령 경로에서 해당 이름이 모두 검색됩니다. 이 -m
플래그를 사용하면 인수가 패턴으로 처리되고(따옴표로 묶어야 함) 이러한 패턴 중 하나와 일치하는 각 명령에 대한 정보가 표시됩니다.
여기서 [-pam] 이름... -c와 동일합니다.
당신은 확인해야zsh 매뉴얼