“whereis”및 “which”는 Mac OS X에서 다른 경로를 반환 명령 의 콘솔 출력입니다 . $ whereis openssl /usr/bin/openssl (이것은

기본 OpenSSL 9.8 (Mac OS X 10.6.8)이 있고 MacPorts ( sudo port install openssl) 를 통해 최신 버전 (1.0.1)을 설치하기로 결정했습니다 .

다음은 whichwhereis 명령 의 콘솔 출력입니다 .

$ whereis openssl
/usr/bin/openssl

(이것은 기본 시스템입니다)

$which openssl
/opt/local/bin/openssl

(MacPorts를 통해 설치됨)

$ openssl version
OpenSSL 1.0.1c 10 May 2012

(PATH에 mac 포트 버전이 있습니다)

whereiswhich에 대해 다른 경로가 반환되는 이유는 무엇 입니까? 동등한 결과를 얻을 수있는 방법이 있습니까?



답변

의 맨 페이지에는 다음 whereis과 같이 명확하게 나와 있습니다.

whereis 유틸리티는 지정된 프로그램 의 표준 바이너리 디렉토리 를 검사하여 찾은 경로를 인쇄합니다.

검색된 경로는 sysctl (8) 유틸리티에서“user.cs_path ”문자열에 대해 반환 한 문자열입니다.

이와는 반대로 which바이너리가 사용자 경로의 위치를 ​​확인하는 데 일반적으로 사용되는 도구입니다.

which 유틸리티는 명령 이름 목록을 가져 와서 실제로 이러한 명령이 호출 된 경우 실행될 각 실행 파일의 경로를 검색합니다 .

이후 즉, 귀하의 차이를 설명 /opt/local/bin하지 않는 시스템 차원이다 “표준”경로 – 결국, MacPorts를가 완전히 선택 사항이며 설치 및 sysctl단지가 /usr/bin:/bin:/usr/sbin:/sbin의에서 user.cs_path당 기본.

일반적으로을 사용하는 대신 이진을 찾 which거나 which -a찾으십시오 whereis.


당신은 이론적으로 변경할 수 있습니다 user.cs_path통해

sysctl -w user.cs_path=/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

하지만 그것이 좋은 생각인지는 모르겠습니다.