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

问题描述 投票:0回答:7

当我在终端中“打开.profile”时,我有以下内容:

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

现在我安装了 Mac 版的 Node.js,它说:

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

如何添加

/usr/local/bin
来导出
PATH=$PATH:/usr/local/git/bin

macos git node.js path profile
7个回答
132
投票

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

但是在 Zsh 中,您也可以将数组变量标记为仅接受唯一条目:

typeset -TU PATH path

甚至可以将自己的路径变量镜像到数组中:

typeset -TU PYTHONPATH pythonpath

23
投票

尝试将 $PATH 放在末尾。

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

6
投票

为了让编辑后的路径值在接下来的会话中保持不变

cd ~/
touch .bash_profile
open .bash_profile

这将在编辑器中打开 .bash_profile,在将所需内容添加到用冒号分隔每个值的路径后,在以下内容中写入。

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

保存,退出,重新启动终端并享受


4
投票

我也遇到过和你一样的问题

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


2
投票

我倾向于觉得这很整洁

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

2
投票

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

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

0
投票

打开终端并输入命令

sudo vi /etc/paths 按 I 键进入插入模式 如果还没有,请在新行中添加以下内容 /usr/local/bin 按退出键退出编辑模式。 输入 :wq 保存并关闭编辑器。或者按 :q 关闭而不保存。 然后重新启动终端

© www.soinside.com 2019 - 2024. All rights reserved.