【问题标题】:setting path in terminal在终端中设置路径
【发布时间】:2013-10-06 19:50:40
【问题描述】:

我正在我的 Mac 上安装 Homebrew 以安装 Macvim。安装 Homebrew 后,系统会提示我运行 brew doctor,这又会生成许多警告。我已经解决了其中几个问题,但被困在两个问题上:

警告:在您的 PATH 中找到了 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

考虑设置您的 PATH 以便 /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

好的,我在这里找到了第二个问题的答案:How to modify PATH for Homebrew?

我只需要重新启动终端。不过,仍然不确定如何处理 Python。

任何建议将不胜感激。谢谢

【问题讨论】:

    标签: python path homebrew enthought


    【解决方案1】:

    除非你需要它,否则我会删除 Enthought 的 Python 版本。

    【讨论】:

    • 我没有。我想我可能已经将它作为课程的一部分安装了。
    【解决方案2】:

    要解决这两个问题:编辑您的 ~/.bash_profile 文件

    /usr/bin occurs before /usr/local/bin 警告:

    此警告告诉您$PATH 环境变量将/usr/bin 列为比/usr/local/bin 更高的优先级,我认为这是 home brew 安装软件包的默认位置。

    如果您忽略这一点,那么这意味着如果您在之前已经安装了该程序(不使用“home brew”)之后使用“home brew”安装或升级该程序到不同的位置,shell 可能会使用较旧的副本,而不是较新的“自制”安装版本。

    $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 的评论表明他们将原始 ~/.bash_profile 保留在同一目录 ($HOME) 中名为 .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 的最高优先级目录,因为如果我们想获得不同的目录,这些条目可能会干扰未来使用“自制”的 Python 发行版。

    shell 将在$PATH 变量中从左到右的顺序查找这些位置以执行命令等。 请记住,路径以冒号 (:) 分隔,并从左到右按优先级降序排列,最高优先级在前。

    方法 1 -(“快速简便”版本):

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

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

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

    单击here 并向下滚动到第 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 发行版,您可以删除这些行和其他 cmets 而不是将它们注释掉)

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

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

    $ vim ~/.bash_profile
    

    如果您没有写入权限,您可能无法更改~/.bash_profile 文件。如果是这样,退出 vim(ESC,然后键入 :q)并通过在上面的 vim 命令前面加上 sudo 和一个空格来更改为超级用户。您可以稍后通过在 shell 中键入 exit 退出 sudo(“超级用户执行”)。

    当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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 2021-05-30
      相关资源
      最近更新 更多