如何更改$PATH的顺序?

16

echo $PATH给我:

/Library/Frameworks/Python.framework/Versions/3.4/bin:/Applications/Sublime Text 2.app/Contents/SharedSupport/bin:/Users/pathreskoo/anaconda/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/git/bin

但是当我想把/usr/local/bin的顺序换到/Library/Frameworks/Python.framework/Versions/3.4/bin的前面时,我输入

sudo emacs /etc/paths

我只获得

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

如何将/usr/local/bin添加到PATH的最前面?

2个回答

29
你可以在位于用户主目录下的文件.bash_profile中设置你的PATH。更具体地说,你可以在该文件末尾添加以下行:
export PATH=/usr/local/bin:$PATH

这将导致/usr/local/bin被添加到现有的PATH之前。换句话说,文件夹/usr/local/bin被插入到你的PATH中,因此它具有最高优先级。你也可以通过执行以下操作将文件夹附加到路径末尾

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

通常,您可以按照以下方式设置导出的文件夹或文件的顺序:

export PATH=/usr/local/bin:/Applications/Sublime Text 2.app/Contents/SharedSupport/bin:/Users/pathreskoo/anaconda/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/git/bin

注意: 这并不是你可以设置PATH的唯一位置,但它是一个常见的位置。


3
/usr/local/bin 添加到路径的前面比完全覆盖继承的值 (PATH=/usr/local/bin:$PATH) 更安全。重复项不会造成任何损害,而且您的路径不太可能变得如此庞大以至于引起性能问题。 - chepner

0

你的$PATH通常会被shell的初始化部分覆盖。通常遵循系统范围的配置文件(/etc/profile),然后是用户侧的配置文件(如果你使用bash,则为.profile,.bash_profile,.bashrc)和这些文件中的任何源命令。被覆盖的命令主要在.bashrc中。

编辑你的.bashrc文件,找到$PATH,你可能会发现export命令并删除你不需要的路径。export $PATH=/usr/local/bin:$PATH 可以覆盖用户级别的命令。


作为一个评论,这可能会更好,因为它不能作为问题的答案独立存在...或者它需要进行大量编辑!祝你好运。 - cregox

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