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

2024-05-06

在我的 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(使用前将#替换为@)

$PATH 中 /usr/bin 和 /usr/local/bin 等的顺序 的相关文章

  • 安装 libjpeg v8 到 /opt/local

    如何在 OSX 上将 libjpeg 8 安装到 opt local 我问的原因是我想用以下方法制作大脑活动的小电影MNE C 库 http www nmr mgh harvard edu martinos userInfo data MN
  • 在 Mac OSX 上交叉编译 x86_64-unknown-linux-gnu 失败

    我尝试将我的 Rust 项目之一编译到 x86 64 unknown linux gnu 目标 cargo build target x86 64 unknown linux gnu Compiling deployer v0 1 0 fi
  • 在java中查找OSX的版本

    我需要测试 java 中 osx 的版本是否 Try System getProperty os name and or System getProperty os version 它返回字符串 HERE https docs oracle
  • 在 OS X 中,如何检测当前活动应用程序何时发生变化?

    尝试为 OS X 编写一个应用程序 该应用程序根据当前的应用程序触发行为 它不需要与它交互 它只需要知道何时更改以及更改内容 任何人都可以推荐哪些 API 可用于此目的吗 我的猜测是辅助服务中的某些内容 因为这是大多数应用程序 例如 Bet
  • 如何使用 iconutil 手动创建 icns 文件?

    当我验证我的应用程序时 出现此错误 应用程序包不包含 ICNS 格式的图标 同时包含512x512 and a 512x512 2x image 我用来制作 icns 图标Img2icns http www img2icnsapp com
  • 如何使用存储在文本文件中的选项在 bash 中显示选择菜单? [复制]

    这个问题在这里已经有答案了 如何使用我存储在文本文件的各行中的选项为用户显示选择菜单 例如 我的文本文件 ingestion txt 如下所示 SOUP FTS CTS JDBC NEW 我希望用户看到这个 Please select an
  • 从子域中的 ../ 路径

    假设我创建了一个子域 http subdomain mydomain com http subdomain mydomain com 最初是在这个网址 http mydomain com subfolder folder http mydo
  • Xcode 服务器 ibtool 构建失败

    我一直在研究使用 Xcode Server 进行 CI 我已经解决了一些问题 但现在有一个问题困扰着我 构建似乎工作正常 但在测试阶段挂起 并在日志底部生成以下内容 2015 11 25 14 44 45 650 xcodebuild 58
  • 在提交到 Mac App Store 的应用程序中调用 openssl 是否可以接受?

    我有点不清楚调用提交到 App Store 的应用程序之外的进程的规则是什么 我读到 如果您想使用 Cocoa 和 OSX 库之外的其他库 框架 您必须将其包含在您的应用程序中 例如 如果使用 QT Python 或 Ruby 编写应用程序
  • Mac OS High Sierra 下无法打开 pty

    我的问题的本质是 用户程序如何在 Mac OS High Sierra 上打开 pty 例如 dev ptyp0 设备名称的标准 open 似乎不起作用 尽管它的保护是 crw rw rw 上下文是在 Mac OS 下运行 Emacs 在
  • SQLite:从命令行仅将模式转储到 .sql 文件中

    我正在尝试转储架构test db仅 即没有数据 到名为的文件中schema sql从 OS X 中的命令行 无需启动 sqlite3 我知道我能做到 sqlite3 open test db output schema sql schema
  • 在 Mac 上更新 Make 版本

    我正在尝试更新 mac 上的 make 版本 但遇到了问题 最小项目依赖项是 4 1 但我的版本似乎是 3 81 我已将 Xcode 更新到最新版本并安装了命令行工具 但它似乎仍然是旧版本 有谁遇到过这个问题或知道解决方法吗 这是我所做的
  • 如何将数据通过管道传输到交互式 bash 脚本并将输出通过管道传输到另一个命令?

    我想将数据通过管道传输到交互式命令中 并将交互式命令的输出作为另一个命令的输入接收 例如 我希望能够执行以下操作 echo Zaphod hello sh goodbye sh 并让输出为 再见 你好 赞福德 这是我对此的初步破解 但我遗漏
  • 如何使用ssh直接连接远程docker容器

    我想直接使用 ssh 连接到远程运行的 Docker 容器 通常我可以 ssh i privateKey user host docker ps which will list all running containers docker e
  • 为什么 tkinter 在 Mac 上失败

    我在 Mac 上使用 tkinter 但是当我使用以下简单代码时 计算机将重新启动 import tkinter as tk window tk Tk 问题是什么 谢谢你 Mac 莫哈韦沙漠 版本 10 14 6 tkinter 版本 8
  • 未加载库:@rpath/libopenblasp-r0.2.19.dylib

    我应该如何解决这个问题 Monas MacBook Pro 02 02 mona python Python 3 6 1 Anaconda custom x86 64 default May 11 2017 13 04 09 GCC 4 2
  • python 打开相对文件夹中所有以.txt结尾的文件

    我需要打开并解析文件夹中的所有文件 但我必须使用相对路径 类似于 input files 我知道在 JavaScript 中你可以使用 path 库来解决这个问题 我怎样才能在Python中做到这一点 这样您就可以获得路径中的文件列表作为列
  • Cocoa 我可以隐藏/显示 NSTextField / NSSecureTextField

    有没有办法在 Cocoa 中打开和关闭 secureTextField 操作系统 我希望用户可以选择查看他们的密码 在 iOS 中 我可以执行类似 textField setSecureTextEntry YES 的操作 我找到了 secu
  • 直接向pbs脚本传递参数

    有没有办法在提交作业之前直接将参数传递给 pbs 脚本 我需要循环遍历由不同数字表示的文件列表 并应用脚本来分析每个文件 我能想到的最好的办法如下 bin sh for i 1 i lt 10 i do export FILENUM i q
  • 如何在 Mac 操作系统中播放声音?

    我想在专为 Mac OS X Lion 10 7 而不是 iPhone 设计的 Objective C 应用程序中播放 mp3 文件 谢谢 看看NSSound http developer apple com library mac doc

随机推荐