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

Ada*_*amT 36 bash terminal homebrew path

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.
Run Code Online (Sandbox Code Playgroud)

这是我的路径:

Adams-MacBook-Pro% echo $PATH                                  
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Dea*_*ean 48

$ PATH只是一个包含字符串的变量.把东西放在前面:

% PATH=/usr/local/bin:$PATH
% echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
Run Code Online (Sandbox Code Playgroud)

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

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

~/.profile:

homebrew=/usr/local/bin:/usr/local/sbin
export PATH=$homebrew:$PATH
Run Code Online (Sandbox Code Playgroud)

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

  • 而不是〜/ .profile,我在OS X Lion中使用了〜/ .bash_profile (4认同)
  • 要使〜/ .profile的任何更改生效,您必须重新打开终端,或键入`%source~/.profile`.至于它为什么不工作,首先要确保文件正在按预期运行.在`〜/ .profile`中添加另一行`echo'profile works!'`然后运行`%source~/.profile`.如果您看到打印到屏幕上,请告诉我. (2认同)

Lel*_*hcr 23

我找到了另一种解决方法.

sudo vim /etc/paths
Run Code Online (Sandbox Code Playgroud)

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

/usr/local/bin
/usr/local/sbin
/usr/bin
/bin
/usr/sbin
/sbin
Run Code Online (Sandbox Code Playgroud)

打开一个新的终端选项卡,然后你会看到

~ $ env|grep PATH
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
Run Code Online (Sandbox Code Playgroud)

  • IMO这是解决它的最简洁方法.它实际上修复了底层问题,并且没有将条目放入PATH两次. (3认同)

小智 10

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

echo export PATH="/usr/local/bin:$PATH" >> ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

重启终端并运行

brew doctor
Run Code Online (Sandbox Code Playgroud)

这个问题应该得到解决


pix*_* 67 5

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

homebrew=/usr/local/bin:/usr/local/sbin
导出 PATH=$homebrew:$PATH

看来这已经成功了!

  • 这为我解决了这个问题 - 我正在使用 zsh,所以仅编辑 .profile 或 .bash_profile 是行不通的,但将这些行添加到 .zshrc 就可以了。 (2认同)