我已经有了默认的OpenSSL 9.8(Mac OS X 10.6.8),并决定通过MacPorts(sudo port install openssl
)安装最新版本(1.0.1 )。
这些是which和whereis命令的控制台输出:
$ whereis openssl
/usr/bin/openssl
(这是默认系统的)
$which openssl
/opt/local/bin/openssl
(这是通过MacPorts安装的)
$ openssl version
OpenSSL 1.0.1c 10 May 2012
(PATH中有mac port的版本)
为什么要为whereis
和返回不同的路径which
,这样可以吗?有什么办法可以得到平等的结果吗?
在的联机帮助页中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
但我不知道这是一个好主意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句