如何在 Mac 上的 $PATH 中添加 /usr/local/bin

Posted

技术标签:

【中文标题】如何在 Mac 上的 $PATH 中添加 /usr/local/bin【英文标题】:How to add /usr/local/bin in $PATH on Mac 【发布时间】:2012-06-17 01:35:06 【问题描述】:

当我在终端中“打开 .profile”时,我得到以下信息:

export PATH=$PATH:/usr/local/git/bin 

现在我为 Mac 安装了 node.js,它说,

确保 /usr/local/bin 在您的 $PATH 中。

如何添加/usr/local/bin 以导出PATH=$PATH:/usr/local/git/bin

【问题讨论】:

我已经投票决定重新打开这个问题。它是关于 Node.js 和 Git(这是程序员使用的工具)。 是的。如果不在这里,在哪里。 小信息:我不知道 OS X 的早期版本,但至少从 Yosemite 开始,/usr/local/bin 默认包含在 $PATH 中。您可以通过运行 echo $PATH 来检查 $PATH 中的内容。 MacOS 从 /etc/paths 生成 PATH(部分),您可以在其中找到 /usr/local/bin 以及 /usr/bin、/bin、/usr/sbin , 和 /sbin。另见(见apple.stackexchange.com/questions/79306 echo $PATH 将打印您的路径。如果您在一些冒号之间看到 /usr/local/bin,那么它就在您的路径中。来源:***.com/a/19202049/1459653 【参考方案1】:

PATH 变量保存了一个用冒号分隔的目录列表,所以如果你想添加多个目录,只需在它们之间加上一个冒号:

export PATH=$PATH:/usr/local/git/bin:/usr/local/bin

该语法适用于任何与 Bourne 兼容的 shell(sh、ksh、bash、zsh...)。但是 zsh 是最新版本的 MacOS 中的默认 shell,它也以另一种方式公开 PATH - 作为一个名为(小写)$path 的变量,它是一个数组而不是单个字符串。所以你可以这样做:

path+=(/usr/local/git/bin /usr/local/bin) 

在任何一种情况下,您都可能需要在添加之前检查以确保该目录不在 PATH 中。下面是使用通用语法的样子:

for dir in /usr/local/git/bin /usr/local/bin; do
   case "$PATH" in 
     $dir:*|*:$dir:*|*:$dir) :;; # already there, do nothing
     *) PATH=$PATH:$dir          # otherwise add it
   esac
done

这是一个 zsh 特定的版本:

for dir in /usr/local/git/bin /usr/local/bin; do
  if (( $path[(i)$dir] > $#path )); then
    path+=($dir)
  fi
done

【讨论】:

虽然您可以这样做,但这不是 OS X 的方式。 OS X 上的路径是使用/usr/libexec/path_helper 构建的,从默认的/etc/profile 调用。从man path_helper 开始,然后在/etc/paths.d 的文件中添加您的路径。您会发现几乎所有来自其他操作系统的路径设置示例都包含$PATH,因为它们似乎都无法成为链中的第一个...... 我只是在回答如何将多个目录添加到 PATH 的问题。您还可以在/etc/paths.d 中创建多个条目,或者创建具有多个目录的单个条目,每行一个,但这在提示时对您没有帮助,并且只是完成同一件事的间接方式。此外,即使问题标记为 osx,这种方法也具有在 Linux 和其他类 UNIX 系统上工作的优势。 我在 Linux 上发现的问题是它非常不一致,不是一个很好的例子。你会发现不同的来源告诉你使用 .profile、.bashrc、/etc/profile、/etc/environment 等等,而且他们都不想负责说“这是设置系统路径的正确位置",所以你最终采取了跨指和希望的方法,将 $PATH 附加到所有东西上,特别是以编程方式。从 homebrew 安装 npm 并且路径神奇地工作,因为它以正确的方式进行。 谢谢 - 为我工作。我通过运行node --version 确认了这一点 非常感谢...我不知道 ZSH 版本。我来自bash 背景,从未花时间学习 ZSH。很高兴知道!【参考方案2】:

在 MAC OS Catalina 中, 这是对我有用的步骤,上述所有解决方案都有帮助,但没有解决我的问题。

    检查节点 --version,仍然是旧版本。 cd ~/ 原子.bash_profile 删除指向旧节点的 $PATH 版本,在我的例子中是 /usr/local/bin/node/@node8 将其添加并保存到 $PATH 而不是“导出 PATH=$PATH:/usr/local/git/bin:/usr/local/bin" 使用节点关闭所有应用程序(终端、模拟器、浏览器展示等) 重启终端并检查节点--version

【讨论】:

【参考方案3】:

使路径的编辑值在接下来的会话中保持不变

cd ~/
touch .bash_profile
open .bash_profile

这将在编辑器中打开 .bash_profile,在将您想要的内容添加到按列分隔每个值的路径后写入以下内容。

export PATH=$PATH:/usr/local/git/bin:/usr/local/bin:

保存,退出,重启你的终端,然后享受

【讨论】:

你还需要在右侧添加 $PATH,否则你将无法访问所有 Linux 命令 @HishamAfzalAhamed 我添加了它。谢谢【参考方案4】:

我倾向于觉得这很整洁

sudo mkdir -p /etc/paths.d   # was optional in my case
echo /usr/local/git/bin  | sudo tee /etc/paths.d/mypath1

【讨论】:

scriptingosx.com/2017/05/where-paths-come-from【参考方案5】:

我和你有同样的问题。

cd 到 ../etc/ 然后使用 ls 确保您的“路径”文件位于 vim 路径,在文件末尾添加“/usr/local/bin”。

【讨论】:

【参考方案6】:

尝试将 $PATH 放在末尾。

export PATH=/usr/local/git/bin:/usr/local/bin:$PATH

【讨论】:

以上是关于如何在 Mac 上的 $PATH 中添加 /usr/local/bin的主要内容,如果未能解决你的问题,请参考以下文章

Mac上的jenkins,PATH没有设置正确,没有/ usr / local / bin

如何从我的 Mac 上的终端窗口运行 g++

Mac OS 10.6 服务器上的 $PATH 变量不断重置

[Mac][$PATH]如何修改$PATH变量

MAC 上的Phantomjs的安装和配置

Mac 上的默认终端 $PATH 位于何处?