在我的 Mac 上,我经常使用 bash。对于我的环境设置,我添加了/usr/bin
and /usr/local/bin
into $PATH
就像我平常做的那样。
虽然我知道什么/usr/bin
and /usr/local/bin
关于,我很好奇,按照惯例,哪个应该排在另一个之前?这有什么具体原因吗?
类似的是/usr/lib
and /usr/local/lib
——希望答案是相同或相似的。
多一点 -
只是原始问题的扩展,您将如何按照约定在 $PATH 中订购以下内容,为什么?
/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/opt/local/bin
/opt/local/sbin
/usr/bin
是操作系统提供的二进制文件所在的位置。/usr/local/bin
是用户提供的二进制文件所在的位置。当您在命令行中键入命令名称时,shell 会在包含的路径中搜索该命令$PATH
环境变量in order。一个常见的模式是/usr/local/bin
领先于/usr/bin
in $PATH
。这允许您安装二进制文件的替代版本,并让它们优雅地“覆盖”操作系统提供的二进制文件。并且操作系统更新不会破坏您的用户安装的软件包。这种模式在 OSX 中被流行的Homebrew http://brew.sh/包管理器工具。
例如,在撰写本文时,OSX El Capitan 提供 git 版本 2.5.4(在/usr/bin
)。如果你想要更新的版本,你可以使用 Homebrew 安装 git 版本 2.7.0(进入/usr/local/bin
)。自从/usr/local/bin
出现在之前/usr/bin
in the $PATH
环境变量,当您发出命令时git
在 shell 中,将使用较新的 Homebrew 版本。
在运行 OSX El Capitan 的全新 Mac 上(我碰巧有一台),/etc/paths
文件包含以下内容:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
产生以下结果$PATH
环境变量:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
与自制程序兼容。我建议坚持使用 OSX 默认值。如果你真的想包括/usr/local/sbin
(在你上面的问题中列出),我会把它放在前面/usr/sbin
出于与上述类似的原因。至于/opt/local/bin
and /opt/local/sbin
,我个人还没有发现需要将它们添加到路径中,但似乎它们可能会进入与它们类似的位置/usr/local
类似物,因为/opt
传统上包含用户安装的二进制文件。
注:同样的解释适用于/usr/lib
vs. /usr/local/lib
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)