which
이 명령 대신 이 명령이 호출되는 이유는 무엇입니까 where
?
논리적으로 실행 파일의 위치를 검색하려고 하므로 검색하는 대신 실행 파일이 있는 "위치"를 검색하십시오.
답변1
에 주어진 어원which
이전 버전의 프로그램:
which : 어떤 프로그램을 받았는지 알려줍니다.
Bill Joy만이 질문이 "프로그램의 출처"가 아닌 "어떤 프로그램을 받는가"인 이유를 알려줄 수 있습니다(그러나 "어디에서"를 묻는 것은 궁극적으로 하나만 있다고 가정하는 반면 목적은 which
어떤 프로그램을 결정 하는 것입니다 ) 프로그램은 잠재적 프로그램 세트 내에서 사용됩니다).
답변2
이것은 대부분 댓글에서 논의되지만 여기에는 내 의견이 있습니다.
내가 항상 이해해 온 이유는 그것이 which
당신에게 보여지기 때문입니다.어느바이너리 로드; 이름이 같은 바이너리가 여러 개 있을 수 있지만 명령을 실행할 때 하나만 선택됩니다.
which
환경 변수를 반복하여 실행 중인 바이너리를 확인합니다 $PATH
.
[root@headdesk ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@headdesk ~]#
which
그것을 살펴볼 것 /usr/local/sbin
입니다 /sbin
.
예를 들어, 보세요 which vim
. 우리의 세 번째 위치에 있습니다 $PATH
.
[root@headdesk ~]# which vim
/bin/vim
경로 우선순위가 더 높은 실행 파일을 추가하면 실행 파일이 추가된 것을 볼 수 있습니다.
[root@headdesk ~]# >/usr/local/sbin/vim; chmod +x /usr/local/sbin/vim
[root@headdesk ~]# which vim
/usr/local/sbin/vim
vim
경로에 있는 모든 실행 파일을 보려면 다음 -a
플래그를 사용할 수 있습니다: [root@headdesk ~]# which -a vim /bin/vim /usr/bin/vim
매뉴얼 페이지에서는 이에 대해 더 간결하게 설명합니다.
설명하다
여기에는 하나 이상의 매개변수가 필요합니다. 각 인수에 대해 인수가 쉘 프롬프트에 입력될 때 실행될 실행 파일의 전체 경로를 stdout에 인쇄합니다. 이는 bash(1)와 동일한 알고리즘을 사용하여 환경 변수 PATH에 나열된 디렉터리에서 실행 파일이나 스크립트를 검색함으로써 수행됩니다.
답변3
cutrightjm과 Stephen Kitt의 두 가지 훌륭한 답변 외에도 whereis
말하는 내용을 수행하는 명령이 있습니다.
맨페이지에서:
whereis - locate the binary, source, and manual page files for a command