jct*_*tim 30 path macports which macos
我有默认的 OpenSSL 9.8 (Mac OS X 10.6.8) 并决定通过 MacPorts ( sudo port install openssl
)安装最新版本 (1.0.1 )。
这些是which和whereis命令的控制台输出:
$ whereis openssl
/usr/bin/openssl
Run Code Online (Sandbox Code Playgroud)
(这是默认系统的一个)
$which openssl
/opt/local/bin/openssl
Run Code Online (Sandbox Code Playgroud)
(这是通过 MacPorts 安装的)
$ openssl version
OpenSSL 1.0.1c 10 May 2012
Run Code Online (Sandbox Code Playgroud)
(PATH中有mac端口的版本)
为什么为whereis
and返回了不同的路径which
,这可以吗?有什么办法可以得到相同的结果吗?
slh*_*hck 34
在 的联机帮助页中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
Run Code Online (Sandbox Code Playgroud)
但我不知道这是否是个好主意。
归档时间: |
|
查看次数: |
35819 次 |
最近记录: |