在终端中设置路径

4
我正在安装Homebrew,以便在Mac上安装Macvim。安装Homebrew后,我被提示运行brew doctor,结果生成了许多警告。我已经解决了其中的几个,但卡在了两个问题上:
警告:在您的路径中发现了Enthought Python。这可能会导致构建问题,因为该软件会将自己的iconv和libxml2副本安装到其他构建系统也会选择的目录中。
我不确定是否应该简单地忽略它或寻找一种卸载Enthought Python的方法。
警告:/usr/bin出现在/usr/local/bin之前。这意味着系统提供的程序将被使用,而不是Homebrew提供的程序。以下工具存在于两个路径:
git
git-cvsserver
git-receive-pack
git-shell
git-upload-archive
git-upload-pack

考虑将路径设置为/usr/local/bin在/usr/bin之前。以下是一行代码: echo export PATH="/usr/local/bin:$PATH" >> ~/.bash_profile 我已经运行了 echo export PATH="/usr/local/bin:$PATH" >> ~/.bash_profile 多次,但仍然收到相同的警告。这是我的路径:
nngrey$ echo $PATH
/Users/nngrey/.rvm/gems/ruby-2.0.0-p247@railstutorial_rails_4_0/bin:/Users/nngrey/.rvm/gems/ruby-2.0.0-p247@global/bin:/Users/nngrey/.rvm/rubies/ruby-2.0.0-p247/bin:/Users/nngrey/.rvm/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Users/nngrey/bin

好的,我在这里找到了我的第二个问题的答案:如何修改Homebrew的PATH?

我只需要重新启动终端。不过我还不确定该怎么处理Python。

如果有任何建议,请告诉我。谢谢!

2个回答

5
为了解决这两个问题:编辑你的~/.bash_profile文件
关于/usr/bin在/usr/local/bin之前的警告:
此警告提示您的$PATH环境变量将/usr/bin列为比/usr/local/bin更高的优先级,我假设这是homebrew安装软件包的默认位置。
如果您忽略此警告,则意味着如果您在已经将该程序以不同位置(而非使用homebrew)安装后再使用homebrew安装或升级程序,则shell可能会调用旧版本而不是新的homebrew安装版本。 $PATH变量可能是Unix Shell环境变量中最重要的变量之一(您可以键入env来列出shell中的环境变量),因为它定义了计算机在查找要执行的程序时要搜索的目录顺序。最高优先级路径名首先指定。
您可以通过在Terminal.app中输入以下内容来查看~/.bash_profile的内容:
$ cat ~/.bash_profile

请记住:不要打出$,它只是终端提示符的表示。
它应该输出类似于这样的内容:
# Setting PATH for EPD_free-7.3-2
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH

请注意,Enthought的评论表明他们在同一目录($HOME)中保留了原始的~/.bash_profile的副本,名为.bash_profile.pysave。如果您想要查看该文件,请使用cat或文本编辑器检查它。如果您决定恢复到该文件,则可以通过删除~/.bash_profile文件并将.bash_profile.pysave重命名为.bash_profile 来实现。(对我来说这不是一个选项,因为我可能曾经安装了Enthought的发行版两次(可能是覆盖安装),所以我的.bash_profile.pysave仍然包含Enthought的配置,而我的~/.bash_profile.列出了两个Enthought配置的副本。)
这是Enthought分发设置$PATH环境变量为${PATH}。为了显示${PATH}变量的内容,让我们在shell中输入echo $ PATH。它应该显示Enthought自己的目录具有第一优先级(因为它们排在最前面)。
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/Current/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin

如果你仔细观察上面的例子,你会发现/usr/local/bin在列表中出现了两次!一次在第三个位置,另一次在倒数第二个位置。虽然/usr/bin位于它们之间,但是brew doctor解析器检测到了问题(这可能是一个brew doctor的错误,只检查尾部的/usr/local/bin,但几乎肯定是Enthought的错误,因为他们在我的$PATH定义中留下了两个/usr/local/bin。如果你没有看到/usr/local/bin/出现两次,那么可能是因为我在我的电脑上安装了两次Enthought。)
因此,即使这里可能并没有真正的问题,brew doctor仍然认为有问题,我们还需要摆脱Enthought放置的目录具有最高优先级,因为这些条目可能会干扰我们将来使用'home brew'获取不同的Python分布。
Shell将按从左到右的顺序查找$PATH变量中的这些位置以执行命令等等。 请记住,路径由冒号(:)分隔,并按从左到右的降序优先级列出,最高优先级排在最前面。

方法1 -("快速简单"版本):

A)重新定义$PATH变量,在终端中粘贴此命令:

$ echo 'export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"' >> ~/.bash_profile

这将把回显的字符串附加(使用>>运算符)到~/.bash_profile文件的末尾。如果你使用此命令,你仍需要编辑你的~/.bash_profile以后删除Enthought的内容。

点击这里并滚动到第3步了解更多关于这个特定命令的信息。

或者你可以cd进入$HOME目录,并手动将上面命令中的字符串添加到你的.bash_profile中,就像我下面展示如何删除Enthought的配置一样。

B) 要禁用Enthought Python发行版,请编辑你的~/.bash_profile文件:

切换到你的主目录:

$ cd $HOME

例如,在TextEdit中编辑文件:

$ open -a "TextEdit" .bash_profile

找到以下两行:

PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
export PATH

将每一行前面加上一个#号来注释掉它们。然后保存文件。

(如果您计划不再使用Enthought发行版,可以删除这些行和其他注释,而不是注释掉它们)

方法2 - 使用文本编辑器编辑文件(并解决两个问题)

(以下说明假定您不熟悉vim编辑器)

$ vim ~/.bash_profile

如果您没有写权限,可能会被禁止更改~/.bash_profile文件。如果是这样,请退出vim(ESC,然后键入:q),并通过在上面的vim命令前添加sudo和一个空格来切换到超级用户。回到shell后,您可以通过键入exit退出sudo('super user do')。

当vim第一次打开时,您将进入命令模式,在该模式下输入不会改变文件内容,而是向窗口底部的提示添加命令(例如:q退出或:w写入(保存)更改)。

在vim中,您可以使用箭头键(或HJKL键)移动。定位要编辑的行后,按I键进入-INSERT-模式,并开始在光标之前插入字符(在命令模式下按A键也会退出命令模式,但会在光标之后开始插入文本)。

如果您认为将来可能需要使用Enthought分发版,可以在每行开头放置#注释掉所有行,如下所示:

# Setting PATH for EPD_free-7.3-2
# The original version is saved in .bash_profile.pysave
# PATH="/Library/Frameworks/Python.framework/Versions/Current/bin:${PATH}"
# export PATH
# export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"

如果您没有使用Enthought发行版的计划,或者已经卸载了它,只需从~/.bash_profile文件中删除上述所有行即可。
要为$ PATH环境变量声明新定义,请在下面添加此行:
export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"

编辑完成后,按下ESC离开-INSERT-模式并返回命令模式。然后键入:wq以写入更改并退出vim编辑器。然后您将返回shell。

最后,请使用以下命令运行新保存的~/.bash_profile文件:

$ source .bash_profile

如果您只是将Enthought的行注释掉了,您可以返回到您的.bash_profile文件,并取消注释这两行以再次启用Enthought发行版。
现在运行brew doctor命令,然后您就可以使用它了。 如果仍有警告,请关闭终端并重新打开,然后重试。
执行echo $PATH命令应该会显示:
/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin

1

除非你需要它做某些事情,否则我建议删除Enthought版本的Python。


我不确定。我觉得可能是作为课程的一部分安装的。 - user1936292

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