如何从mac上的$ PATH中删除某个路径

时间:2013-03-03 15:21:11

标签: python macos python-2.7 path terminal

我需要在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 个答案:

答案 0 :(得分:1)

考虑到将路径添加到$PATH变量的顺序(因此您要删除第三个元素),您可以在.bash_profile的末尾添加这样的命令:

 export PATH=`echo $PATH | cut -d":" -f1,2,4-`

答案 1 :(得分:1)

您可以使用参数展开修剪路径的固定部分。将其添加到.bash_profile的末尾(或者至少足够晚,以便在添加违规路径后处理):

PATH=${PATH/\/Library\/Frameworks\/Python.framework\/Versions\/2.7\/bin:}

(所有反斜杠都是不幸的,但至少你只需键入一次。)

答案 2 :(得分:0)

还有更多方法可以在OS X上向PATH添加内容。

/etc/paths文件外,还有一个目录/etc/paths.d。在该目录中是与/etc/paths格式相同的文本文件。 /etc/paths.d中每个文件的行都会在/etc/paths中的行后面.bash_profile中的行中添加到您的PATH中(尽管这取决于.bash_profile中的内容)。

如果您不需要的Python框架路径不在上面,我可以考虑另外两个地方尝试。您的主目录中还有/private/etc/paths/private/etc/paths.d,可能还有.bashrc文件。

我希望能为你做到这一点。如果没有,那么我将使用的解决方法是使.bash_profile中的最后一个命令将/usr/bin附加到PATH的前面。这样,Apple的Python版本(链接到/usr/bin)将在您的框架版本的Python之前找到。