brew医生说“错误:/ usr / bin发生在/ usr / local / bin之前”如何修复?

时间:2012-07-04 22:11:24

标签: bash path terminal homebrew

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.

这是我的路径:

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

我认为将事情移到前线是危险的?我该如何解决这个问题?另外,我甚至不确定在哪里找到路径中声明/ user / bin的位置。

由于

8 个答案:

答案 0 :(得分:47)

$ PATH只是一个包含字符串的变量。把事情放在前面:

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

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

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

~/.profile

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

export使变量可用于shell的任何子进程。

答案 1 :(得分:23)

我找到了解决这个问题的另一种方法。

sudo vim /etc/paths

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

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

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

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

答案 2 :(得分:10)

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

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

重新启动终端并运行

brew doctor

问题应该解决

答案 3 :(得分:4)

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

  

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

这似乎已经成功了!

答案 4 :(得分:3)

也许OP使用 zsh 解决问题的方法是每次打开时都编辑〜/ .zshrc iterm 将加载此文件。
更改路径的字词。

答案 5 :(得分:2)

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

在我自己的.bash_profile中,我使用了一个名为“pathadd”的脚本,它可以防止我的PATH在分叉shell时变得笨重且充满重复。所以我专门采取了/ etc / paths动作,以避免在一次又一次地将/ usr / local / bin添加到前面时在PATH中有重复的目录。

答案 6 :(得分:1)

使用$ PATH进行任何更改后,您需要重新启动终端。

答案 7 :(得分:0)

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