“ whereis”和“ where”在Mac OS X中返回不同的路径

杰西姆

我已经有了默认的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 port的版本)

为什么要为whereis返回不同的路径which,这样可以吗?有什么办法可以得到平等的结果吗?

slhck

在的联机帮助页中whereis,它明确指出(强调我的意思):

whereis实用程序检查指定程序标准二进制目录,并打印出找到的所有目录的路径。

搜索的路径是sysctl(8)实用程序为``user.cs_path''字符串返回的字符串

与此相反,which是通常用于检查二进制文件在用户路径中的位置的工具。

which实用程序获取命令名称的列表,并在路径中查找在实际调用了这些命令后将运行的每个可执行文件

这就说明了您的与众不同之处,因为/opt/local/bin它不是系统范围的“标准”路径(毕竟,MacPorts是完全可选的安装),并且默认情况下sysctl只有/usr/bin:/bin:/usr/sbin:/sbin这种方式user.cs_path

通常,坚持使用whichwhich -a找到二进制文件,而不要使用whereis


理论上你可以改变user.cs_path通过

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

但我不知道这是一个好主意。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章