如何修改Homebrew的PATH?

162

尝试安装 Ruby 1.9.3,阅读了一些资料得知需要先安装 Homebrew。运行 brew doctor 命令后出现了一堆警告信息,其中之一是:

警告:/usr/bin 出现在 /usr/local/bin 之前。这意味着系统提供的程序将被使用,而不是 Homebrew 提供的程序。以下工具在两个路径下都存在:

easy_install
easy_install-2.6

考虑修改你的PATH,使得/usr/local/bin在你的PATH中排在/usr/bin之前。

如何实现这个要求?


1
@AristotlePagaltzis 在 SuperUser 上的回答(http://superuser.com/a/580611/86416)在我看来提供了最好的解决方案,允许您的系统应用程序继续使用 /usr/bin,同时您可以有选择性地创建符号链接,以便使用 Homebrew 可执行文件代替 Apple 提供的版本,例如 Git。 - user456814
@mrdavidjcole:fengd没有回答那个问题吗? - fotinsky
Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎不属于编程或开发范畴。请参阅帮助中心中的我可以在这里问什么样的问题。也许超级用户苹果Stack Exchange更适合提问。另请参阅我应该在哪里发布Dev Ops相关的问题? - jww
5个回答

308

打开你的/etc/paths文件,将/usr/local/bin放在/usr/bin之前。

$ sudo vi /etc/paths
/usr/local/bin
/usr/local/sbin
/usr/bin
/bin
/usr/sbin
/sbin

并且重新启动终端,@mmel


9
在进行此更改后,请重新加载环境或启动一个新的终端。 - mmell
5
不同意这个- 应该使用以下答案- 时间机器等不会捕捉到这个更改,因为它在用户文件夹外。 - Ian Warner
这也是我发现的最佳解决方案,如果你的问题是RVM和Homebrew似乎在你的.bash_profile文件中竞争同一块空间。 - MCB
1
我不会编辑 /etc/paths;相反,使用其他地方描述的 .profile / .bash_profile 方法(例如,@avelis 下面的答案或更谨慎的方法,请参阅第一个评论引用 SuperUser 上 AristotlePagaltzis 的答案)。 - rholmes
1
你可以尝试使用nano终端文本编辑器,而不是vi。我发现这更容易使用。例如,使用"sudo nano /etc/paths"代替"sudo vi /etc/paths"。 - tbradley22
为什么要编辑 /etc,当你可以将其配置到本地用户帐户中呢?我和其他人一样,不同意这是最好的解决方案。 - user636044

81

有许多方法可以更新您的路径。Jun1st的回答非常好。另一种方法是增加您的 .bash_profile

export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"

上述代码将/usr/local/bin/usr/local/sbin放在你的$PATH前面。一旦你source了你的.bash_profile或开启一个新终端,你可以通过 echo 命令验证你的路径。

$ echo $PATH
/usr/local/bin:/usr/local/sbin:/Users/<your account>/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

如果运行$ brew doctor后再次没有出现错误,那就表示结果已经令人满意了。

在解决我遇到的问题时,这篇博客帖子帮了我不少忙。 http://moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/


2
@JanuszChudzynski 对于Jun1st的解决方案,可能需要重新启动命令行会话才能看到更改。 - avelis
Homebrew的最近版本提示:*考虑设置您的PATH,使得/usr/local/bin出现在/usr/bin之前。以下是一行命令:echo export PATH="/usr/local/bin:$PATH" >> ~/.bash_profile*。这基本上就是这个答案所建议的。 - nacho4d
但我怀疑这可能不是正确的方法。请参见下文: 更改前:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 更改:echo export PATH="/usr/local/bin:$PATH >> ~/.bash_profile 更改后:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin这意味着如果在 /usr/local/bin 中找不到命令,则可能会在查找其他路径之前进行两次搜索。我认为最好更改 /etc/paths 文件。 - nacho4d
$ echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile 给我返回了 $PATH"' >> ~/.bash_profile -bash: $: 命令未找到 - Mamba
@rpeg 我相信如果你在网上搜索教程,会有大量的资源可供使用,但这里有一个我知道的。http://www.linux.com/learn/tutorials/272346-bash-101-working-at-the-cli - avelis

23
在您喜欢的终端应用程序中运行以下命令:
echo export PATH="/usr/local/bin:$PATH" >> ~/.bash_profile

重新启动终端并运行

brew doctor

问题应该得到解决。


4
如果您正在使用zsh,请使用以下命令: echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.zshrc 该命令会将"/usr/local/sbin"添加到您的环境变量路径中。 - kareem
一直在寻找解决方案,但没有人提到brew doctor,直到我发现了这个。谢谢! - RabbitHole24

1
打开TextEdit中的bash配置文件
打开-e .bash_profile 编辑文件或在PATH前粘贴 export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/local/bin:/usr/local/sbin:~/bin 保存并关闭文件
*要直接打开.bash_profile,请打开TextEdit>文件>最近打开

0
为了避免不必要的重复,我将以下内容添加到我的~/.bash_profile中。
case ":$PATH:" in
  *:/usr/local/bin:*) ;;     # do nothing if $PATH already contains /usr/local/bin
  *) PATH=/usr/local/bin:$PATH ;;  # in every other case, add it to the front
esac

来源:https://superuser.com/a/580611


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接