brew医生说“错误:/ usr / bin出现在/ usr / local / bin之前”如何解决?

Adams-MacBook-Pro% brew doctor Error: /usr/bin occurs before /usr/local/bin This means that system-provided programs will be used instead of those provided by Homebrew. The following tools exist at both paths: clusterdb createdb createlang createuser dropdb droplang dropuser ecpg git git-cvsserver git-receive-pack git-shell git-upload-archive git-upload-pack gitk pg_config pg_dump pg_dumpall pg_restore pg_upgrade psql reindexdb vacuumdb Consider amending your PATH so that /usr/local/bin is ahead of /usr/bin in your PATH. 

这是我的path:

 Adams-MacBook-Pro% echo $PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin 

我认为把事情推到前面是危险的 我如何解决这个问题? 另外,我甚至不知道在哪里findpath中声明的/ user / bin。

谢谢

$ PATH只是一个包含string的variables。 把东西放在前面:

 % PATH=/usr/local/bin:$PATH % echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin 

这并不危险,因为它只适用于你打开的当前shell(它不会影响系统或其他shell的path)。

要自动更改所有打开的shell的path,请将其放入~/.profile 。 如果该文件不存在,可以创build该文件。

~/.profile

 homebrew=/usr/local/bin:/usr/local/sbin export PATH=$homebrew:$PATH 

export使variables可用于shell的任何subprocess。

我find了另一种解决方法。

 sudo vim /etc/paths 

并像这样添加/ usr / local / bin和/ usr / local / sbin

 /usr/local/bin /usr/local/sbin /usr/bin /bin /usr/sbin /sbin 

打开一个新的terminal标签,然后你会看到

 ~ $ env|grep PATH PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin 

只需在您最喜爱的terminal应用程序中运行以下行:

 echo export PATH="/usr/local/bin:$PATH" >> ~/.bash_profile 

重新启动你的terminal并运行

 brew doctor 

这个问题应该解决

我刚刚创build了一个.bashrc文件并添加了

自制=在/ usr / local / bin目录:在/ usr / local / sbin中
export PATH = $ homebrew:$ PATH

这似乎已经成功了!

也许OP的使用zsh
解决这个问题的方法是在每次打开iterm时编辑〜/ .zshrc来加载这个文件。
改变有关PATH的话。

如果你真的想使它成为永久的和默认的,编辑文件/ etc / paths(使用sudo)并将/ usr / local / bin移动到列表顶部。

在我自己的.bash_profile中,我使用了一个叫做“pathadd”的脚本,它可以防止我的PATH变得笨拙并且在shell被分叉时会被重复。 所以我专门采取了/ etc / paths动作,以避免在PATH中重复添加/ usr / local / bin。

使用$ PATH进行更改后,您需要重新启动terminal。

在OS X需要编辑的Mountain Lion是~/.bash_profile