gpt4 book ai didi

macos - $PATH 中/usr/bin 和/usr/local/bin 等的顺序

转载 作者:行者123 更新时间:2023-11-29 08:51:59 28 4
gpt4 key购买 nike

在我的 Mac 上,我经常使用 bash。对于我的环境设置,我像往常一样将 /usr/bin/usr/local/bin 添加到 $PATH 中。

虽然我确实知道 /usr/bin/usr/local/bin 是关于什么的,但我很好奇按照惯例哪个应该先于另一个?这有什么具体原因吗?

Similar 适用于 /usr/lib/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 环境变量中包含的路径中按顺序 搜索该命令。一个常见的模式是在 $PATH 中让 /usr/local/bin 位于 /usr/bin 之前。这允许您安装二进制文件的替代版本,并让它们优雅地“覆盖”操作系统提供的二进制文件。操作系统更新不会破坏用户安装的软件包。这种模式在 OSX 中被流行的 Homebrew 特别使用。包管理器工具。

例如,在撰写本文时,OSX El Capitan 提供了 git 版本 2.5.4(在 /usr/bin 中)。如果你想要更新的版本,你可以使用 Homebrew 安装 git 版本 2.7.0(到 /usr/local/bin)。由于 /usr/local/bin$PATH 环境变量中位于 /usr/bin 之前,当您发出命令 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/opt/local/sbin,我个人还没有发现需要将它们添加到路径中,但看起来它们可能会去在与他们的 /usr/local 类似物类似的地方,因为 /opt 传统上包含用户安装的二进制文件。

注意:同样的解释适用于 /usr/lib/usr/local/lib

关于macos - $PATH 中/usr/bin 和/usr/local/bin 等的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34984870/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com