修改PATH,使/ usr / local / bin领先于/ usr / bin


24

我正在尝试安装brew,但收到以下警告:

Warning: /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:

2to3
2to3-2.7
idle
idle2.7
pydoc
pydoc2.7
python
python-config
python2.7
python2.7-config
pythonw
pythonw2.7
smtpd.py
smtpd2.7.py

Consider amending your PATH so that /usr/local/bin
is ahead of /usr/bin in your PATH.

我不知道如何修改路径。我已经从此堆栈溢出文章(http://stackoverflow.com/questions/8886114/using-brew-with-ruby-1-9-2)探索了几个文件,但是找不到编辑的路径。我仅有的唯一存在的文件是我的/ etc / profile文件,该文件当前如下所示:

# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
    PATH="/Library/Frameworks/Python.framework/Versions/2.7/local/bin:${PATH}"
export PATH

我只想卸载python,然后通过自制程序重新安装它,但是对一次破坏太多东西有些担心。

有没有简单的方法可以修改路径?我应该创建一个.bash_profile文件吗?感谢您的任何帮助。

Answers:


30

是的,.bash_profile在您的主目录中创建一个文件,其中包含

PATH="/usr/local/bin:$PATH"

然后执行以下一项操作以使更改生效

  • 执行 . ~/.bash_profile
  • PATH="/usr/local/bin:$PATH"在当前shell中执行
  • 重新启动终端

2
@threenovation如果以上答案正确,我可以建议您将其标记为答案(单击答案旁边的对勾)
Stu Wilson

我想知道是否应该出口?子进程也应具有此新路径。另外:当我设置brew时,它没有提醒我/ usr / bin在/ usr / local / bin之前。
史蒂文·卢

@StevenLu,当您进入.bash_profile时,它已经被导出。再次显式导出它没有什么坏处,但这不是必需的。
格伦·杰克曼

谢谢你 可行“您的系统正在酝酿中”。
Vezu 2012年

我似乎在中收到重复的条目$PATH
flow2k

10

您需要修改/ etc / paths,以便在/ usr / bin之前列出/ usr / local / bin。为此,您需要编辑您的编辑器。

打开编辑器的方法之一是

 sudo open -t /etc/paths

我的PATH已在.bash_profile中正确配置,但未在中配置/etc/paths。效果很好。
尼克·汤姆林

7
请勿使用此方法设置路径-非终端应用程序可能会拾取“酿造的”组件而失败。除非您真正了解自己在做什么,否则使用“ sudo”也应该是一个危险信号(尤其是对于Mac Homebrew这样的用户级开发系统而言)。编辑您的.bash_profile并重新启动终端就足够了。
罗尔姆斯

@rholmes那么对的更改.bash_profile只会影响交互式用户外壳,而不会影响其他应用程序?
flow2k

1
@ flow2k .bash_profile将影响交互式用户外壳。从shell命令行启动的应用程序将看到所有导出的变量(例如,启动“常规” Mac应用程序或命令行命令)。可以在此处找到更多详细信息,但它们的区别比您要求的要好:scriptingosx.com/2017/04/about-bash_profile-and-bashrc-on-macos glenn jackman的答案是一个使用的方法。
rholmes '18 -10-1

1
@ flow2k是的,您已经正确地说了。
rholmes '18 -10-2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.