如何在 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