"whereis"및 "which"는 Mac OS X에서 다른 경로를 반환


27

기본 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에 대해 다른 경로가 반환되는 이유는 무엇 입니까? 동등한 결과를 얻을 수있는 방법이 있습니까?

답변:


31

의 맨 페이지에는 다음 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

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


감사합니다. "whereis 유틸리티가 표준 바이너리 디렉토리를 검사 합니다 "라고 강조했습니다. 이것이 정답입니다! 작은 평판의 원인에 답변 할 수 없습니다 ((
jctim

걱정하지 마십시오. 곧 더 많은 명성을 얻게 될 것입니다. 슈퍼 유저에 오신 것을 환영합니다! :)
slhck

OS X에서 psql과 동일한 문제가 있습니다. 불행히도 user.cs_path는 쓸 수 없습니다. 그래도 유용한 해결책에 감사드립니다.
user208769 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.