如何在Mac上从$PATH中删除某个路径
我需要在我的Mac OS X Lion上,把/Library/Frameworks/Python.framework/Versions/2.7/bin
这个路径从$PATH
变量中去掉。为了找到这个路径是从哪里加进去的,我打开了几个文件,这些文件会往路径里添加东西,但就是找不到添加Python路径的地方。以下是几个文件的输出和路径变量的内容:
echo $PATH
的结果是:
/opt/local/bin:/opt/local/sbin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/opt/local/bin:/opt/local/sbin:/Users/friedrich/.rvm/gems/ruby-1.9.3-p362/bin:/Users/friedrich/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/friedrich/.rvm/rubies/ruby-1.9.3-p362/bin:/Users/friedrich/.rvm/bin:/Users/friedrich/.rbenv/shims:/Users/friedrich/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/git/bin
文件/etc/paths/
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
文件~/.profile
export PATH=$PATH:/usr/local/git/bin:/usr/local/Cellar/todo-txt/2.9/bin
文件~/.bash_profile
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
# todo.txt script path
source /usr/local/Cellar/todo-txt/2.9/etc/bash_completion.d/todo_completion complete -F _todo t
# MacPorts Installer addition on 2013-03-01_at_21:26:56: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.
最后一个往路径里添加东西的文件似乎是.bash_profile
,它添加了export PATH=/opt/local/bin:/opt/local/sbin:$PATH
,所以我需要找的是在这个之前添加东西的文件。
3 个回答
你可以通过参数扩展来去掉路径中的固定部分。把下面这段代码加到你的 .bash_profile
文件的末尾(或者至少要放在一个足够靠后的位置,这样它会在有问题的路径被添加之后处理):
PATH=${PATH/\/Library\/Frameworks\/Python.framework\/Versions\/2.7\/bin:}
(虽然这些反斜杠看起来有点麻烦,但你只需要输入一次就可以了。)
在OS X上,还有更多方法可以将内容添加到你的PATH中。
除了/etc/paths
文件,还有一个目录/etc/paths.d
。在这个目录里,有一些文本文件,它们的格式和/etc/paths
是一样的。/etc/paths.d
中的每个文件里的内容,会在/etc/paths
的内容之后添加到你的PATH中,但在.bash_profile
的内容之前(不过这也取决于.bash_profile
里面具体有什么)。
如果你不想要的Python框架路径不在上面提到的地方,还有两个其他的地方可以试试。还有/private/etc/paths
和/private/etc/paths.d
,以及你家目录下可能有一个.bashrc
文件。
希望这些信息能帮到你。如果还是不行,我建议你在.bash_profile
的最后一条命令中,把/usr/bin
添加到你的PATH最前面。这样,苹果自带的Python(在/usr/bin
中)就会在你的框架版本Python之前被找到。
考虑到你添加路径的顺序(比如你想删除第三个元素),你可以在你的 .bash_profile
文件的最后加上这样的命令:
export PATH=`echo $PATH | cut -d":" -f1,2,4-`