$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 等的顺序 的相关文章

  • UNIX 统计时间格式

    是否可以格式化 stat 的时间输出 我在用 stat c n A z filename 在 bash 脚本中 但它的时间格式不是我想要的 是否可以在命令中更改此格式 或者我必须稍后手动执行此操作 示例输出如下 lib drwxr xr x
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • GitHub Actions:如何将 toJSON() 结果传递给 shell 命令

    因此 我正在与 Github Actions 合作进行端到端测试 我正在查看的设置是让一项作业检索要测试的 url 列表 而我的第二项作业使用该列表创建一个矩阵并测试所有这些 我的问题是 当我实际运行测试脚本时 必须从命令行完成 因为我使用
  • 我可以在 macOS 上使用 win32com 客户端吗?

    我一直在研究 Pycel 和 Xlrd 库 在 Mac 上使用它们的问题是这两个库都使用 win32com client 读取 Excel 文件 所以我想知道 有什么办法我可以使用win32commacOS 的客户端 如果没有 我可以使用类
  • 如何将 Xcode 指向旧的 SDK,以便将其用作“基础 SDK”?

    我的 Mac 的设置 Volume A 操作系统 X 10 8Xcode 4 5 或更高版本 10 6 SDKIS NOT作为基础 SDK 提供 Volume B 操作系统 X 10 7Xcode 4 3 3 10 6 SDKIS作为基础
  • 如何使用bash脚本获取分区的偏移量?

    我可以用parted找出我的图像的偏移量 sudo parted s image img unit B print Model file Disk home user image img 107374182400B Sector size
  • 在 Bash 中替换垂直线

    我很难完成我的脚本 因为这一部分没有按照我想要的方式运行 我的脚本中有这一行 cat home tmp temp1 txt awk gsub RS gsub RS print gt home tmp temp txt 效果很好 是的 但是当
  • Bash for Windows 10 gcc 不会编译粘贴到根目录中的 c 文件

    正如标题所示 如果我将在其他地方编写的c文件粘贴到Linux子系统的根目录中 则无法编译它 我做了一个测试 我制作了两个不同标题的 hello world 程序 一个在 vi 中 我可以从 bash 界面进入 另一个在其他地方 当我编译了
  • bash 脚本抱怨文件名太长

    所以我有一个脚本可以执行此操作 jq 是命令行 JSON 处理器 echo Getting LB Node IDs echo LB STATUS jq loadBalancer nodes id 最后一行的输出是 1 2 3 但是当我尝试将
  • Android Studio 无法运行 Xcode 模拟器

    我正在尝试使用 Xcode iPhone 模拟器模拟我的 Flutter 应用程序 但收到此错误 在升级 Android Studio 和 Xcode 之前 它运行良好 Launching lib main dart on iPhone X
  • 使用 Swift 将自定义字体添加到 macOS 应用程序

    我遵循了一堆教程 但它不起作用 我只是想向 macOS 应用程序添加自定义字体 我基本上尝试过 添加了 ttf字体文件到我的项目 目标会员资格已设置 我还确保使用复制文件Copy Files within Bundle Phases 编译后
  • 如何解决 xcode 一直编译所有内容的问题?

    我已经开始使用 XCode 它似乎可以工作 嗯 大部分 烦人的是它每次都会编译所有源文件 甚至是那些没有更改的文件 我正在掌握 openframeworks 每次都浪费时间编译 openframeworks 源文件 尽管它们没有改变 以下是
  • 终端关闭时 bash 收到的信号

    使用 trap 来捕获信号 如下所示 i 1 while i lt 33 do trap echo i gt gt log txt i done 并强行关闭终端 那么log txt中的内容就是 redhat linux下 1 18 1 17
  • Rails 4.1 环境变量未重新加载

    我创建了一个application yml文件在配置目录中并添加了一些键值对 即AWS REGION us east 1 我还添加了以下内容application rb读取文件并更新 ENV 哈希 if Rails env developm
  • 当 Mission Control 启动时,如何隐藏我的 Electron 应用程序窗口?

    我正在构建一个 Electron 应用程序 但我不希望我的应用程序出现在 macOS Mission Control 中 有没有办法在任务控制启动时隐藏窗口 我能够通过使用来实现此行为setAlwaysOnTop窗口对象上的方法 windo
  • 如何在 Mac OSX Mavericks 中正确运行字符串工具?

    如何在 Mac OSX Mavericks 中正确运行字符串工具 我尝试按照我在网上找到的示例来运行它 strings a UserParser class 但我收到此错误 错误 Applications Xcode app Content
  • 如何检查主机是否在您的known_host ssh中

    我的脚本中使用以下命令 将主机添加到 ssh 中的已知主机 VAR2 expect c spawn ssh o StrictHostKeyChecking no REMOTE HOST USER REMOTE HOST IP expect
  • Mac 应用程序商店 - 尝试让加密发挥作用。 。 。我缺少什么?

    我正在尝试使用 Alan Quartermain 的解决方案 如该问题所链接 Mac App Store 收据验证码 https stackoverflow com questions 4261348 mac app store recei
  • 对 Mac“捆绑”文件进行版本控制的最佳方法

    所以你知道很多 Mac 应用程序都使用 捆绑包 对于你的应用程序来说 它看起来像是一个文件 但实际上它是一个包含许多文件的文件夹 对于要处理此问题的版本控制系统 它需要 检出目录中的所有文件 以便应用程序可以根据需要修改它们 at chec

随机推荐