在我的Mac上,我经常使用bash.对于我的环境设置,我像往常一样添加/usr/bin
并/usr/local/bin
进入$PATH
.
虽然我确实知道什么/usr/bin
和/usr/local/bin
有关,但我很好奇哪个应该按照惯例在另一个之前?那有什么特别的原因吗?
类似的是/usr/lib
和/usr/local/lib
-希望的答案是相同或相似.
再多一点 - 只是原始问题的扩展,你将如何按照惯例在$ PATH中订购以下内容?为什么?
/bin
/sbin
/usr/bin
/usr/sbin
/usr/local/bin
/usr/local/sbin
/opt/local/bin
/opt/local/sbin
Run Code Online (Sandbox Code Playgroud)
Asa*_*aph 33
/usr/bin
是操作系统提供的二进制文件的地方./usr/local/bin
是用户提供的二进制文件的地方.在命令行上键入命令的名称时,shell将按顺序在$PATH
环境变量中包含的路径中搜索所述命令.一个常见的模式是/usr/local/bin
先/usr/bin
于$PATH
.这允许您安装备用版本的二进制文件,并让它们优雅地"覆盖"操作系统提供的二进制文件.操作系统更新不会破坏用户安装的软件包.这种模式在流行的Homebrew包管理器工具中特别用于OSX .
例如,在撰写本文时,OSX El Capitan提供git版本2.5.4(in /usr/bin
).如果你想要一个更新的版本,你可以使用Homebrew来安装git版本2.7.0(into /usr/local/bin
).由于/usr/local/bin
之前/usr/bin
在$PATH
环境变量中,当您git
在shell中发出命令时,将使用较新的Homebrew版本.
在新的Mac上运行OSX El Capitan(我碰巧有一个),该/etc/paths
文件包含以下内容:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Run Code Online (Sandbox Code Playgroud)
它产生以下$PATH
环境变量:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Run Code Online (Sandbox Code Playgroud)
这与自制软件兼容.我建议坚持使用此OSX默认值.如果你真的想要包括/usr/local/sbin
(在你上面的问题中列出),我会在上面提到它之前/usr/sbin
出于类似的原因.至于/opt/local/bin
和/opt/local/sbin
,我个人没有发现需要将它们添加到路径中,但似乎它们可能与它们的/usr/local
类似物位于相似的位置,因为/opt
传统上包含用户安装的二进制文件.
注:同样的解释适用于/usr/lib
对/usr/local/lib
.
归档时间: |
|
查看次数: |
12641 次 |
最近记录: |