명령이 where 대신 which라고 불리는 이유는 무엇입니까? [폐쇄]

명령이 where 대신 which라고 불리는 이유는 무엇입니까? [폐쇄]

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 

관련 정보