어디와 어디의 차이점은 무엇입니까


16

쉘 명령 where과 의 차이점은 무엇입니까 which? 여기 몇 가지 예가 있어요

 ~  where cc
/usr/bin/cc
/usr/bin/cc
~  which cc
/usr/bin/cc

  ~  which which
which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
/usr/bin/which
  ~  which where
/usr/bin/which: no where in (/usr/local/bin:/bin:/usr/bin:/home/bnikhil/bin:/bin)

또한

  ~  where which
which: aliased to alias | /usr/bin/which --tty-only --read-alias --show-dot
 --show-tilde
which: shell built-in command
/usr/bin/which
/usr/bin/which
  ~  where where
where: shell built-in command

나에게 그것들은 쉘 내장 된 것과 같은 일을하는 것 같습니다. 명령과 어떻게 다른지 확실하지 않습니까?

답변:


11

zsh쉘 은 내장되어 있기 때문에 몇 가지 쉘 중 하나입니다 (다른 쉘은 tcsh( 제한이있는 사용자 which를위한 csh스크립트 로 시작되어 개선 된 것으로 내장되어 있습니다)) 쉘 내장이기 때문에 합리적인 것이지만 어쨌든 귀하 또는 귀하의 OS (일부 파일을 통해 ) 쉘의 인턴에 액세스 할 수 없기 때문에 안정적으로 수행 할 수없는 시스템 명령에 대한 호출로 대체하여 파산했습니다. 그래서 쉘이 명령 이름을 해석하는 방법을 알 수 없습니다 .cshtcshwhichrcwhich

zsh을, 모두에서 which, type, whencewhere모든 명령이 무엇인지에 대해 알아 찾는 데 사용되는 명령, 내장하지만 서로 다른 출력을합니다. 그들은 역사적 이유로 모두 거기에 있습니다 whence. 명령에 다른 플래그를 사용하여 모든 행동을 얻을 수 있습니다 .

다음을 실행하여 각각의 기능에 대한 세부 사항을 얻을 수 있습니다.

info -f zsh --index-search=which

또는을 입력 info zsh한 다음로 색인을 가져 와서 i내장 이름을 입력하십시오 (완료 가능).

그리고 사용하지 마십시오 /usr/bin/which. 요즘에는 쉘이 없어 그이 which 필요가. 디모데가 말했듯이, 쉘이 제공하는 내장 기능을 사용하십시오. 대부분의 POSIX 쉘은있을 것이다 type명령을, 당신은 사용할 수 있습니다 command -v만 (모두 비록 명령의 경로를 얻을 type하고 command -v, 그들은 모두하지 않을 경우 대부분에서 사용할 수있는) LSB에없는 더 이상 POSIX (하지만 유닉스에서 선택 사항이며 본과 같은 껍질은 당신이 만날 가능성이 높습니다).

(BTW,에 /usr/bin두 번 표시되는 것처럼 보입니다.에을 ( 를 ) $PATH추가 할 수 있습니다. )typeset -U path~/.zshrc


2
이것은 이전 질문에서도 나타났습니다. 이 지점을 확장하려면 항상 셸이 내장 된 명령을 사용해야합니다. bash에서는 "which"대신 "type"을 사용하십시오.
Tim B

그 팁에 대한 훌륭한 답변과 감사합니다.
nikhil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.