Mac OS X에서 "whereis"와 "which"는 다른 경로를 반환합니다.

Mac OS X에서 "whereis"와 "which"는 다른 경로를 반환합니다.

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

다음은 콘솔 출력입니다.어느그리고어디에명령:

$ whereis openssl
/usr/bin/openssl

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

$which openssl
/opt/local/bin/openssl

(이것은 MacPorts를 통해 설치됩니다)

$ openssl version
OpenSSL 1.0.1c 10 May 2012

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

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

답변1

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

whereis 유틸리티는표준 바이너리 디렉토리지정된 프로그램에 대해 찾은 경로를 인쇄합니다.

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

그와 반대로, which사용자 경로에 대한 바이너리가 어디에 있는지 확인하는 데 일반적으로 사용되는 도구입니다.

which 유틸리티는 명령 이름 목록을 가져와 실행될 각 실행 파일의 경로를 검색합니다.이 명령이 실제로 호출 되었습니까?.

이는 시스템 전체의 "표준" 경로가 아니기 때문에 차이점을 설명합니다. /opt/local/bin결국 MacPorts는 완전히 선택적인 설치이며 기본값에만 해당 sysctl됩니다 ./usr/bin:/bin:/usr/sbin:/sbinuser.cs_path

일반적 which으로 .which -awhereis


user.cs_path이론적으로 다음을 통해 변경할 수 있습니다 .

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

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

관련 정보