【问题标题】:Modifying $PATH variable修改 $PATH 变量
【发布时间】:2014-01-11 01:06:21
【问题描述】:

正在尝试安装 node.js。

brew install node

它似乎奏效了。

但是,完成后收到此消息

Homebrew 安装了 npm。
我们建议将以下路径添加到您的 PATH 环境
获取 npm 安装的二进制文件的变量:
/usr/local/share/npm/bin

好的...所以,我打开我的bash_profile...

这就是我所拥有的:

 export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"

 [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

试图了解如何正确修改它,这样我就不会毁了它......

我是否像这样添加/usr/local/share/npm/bin

export PATH="/usr/local/bin:/usr/local/sbin:~/bin/usr/local/share/npm/bin:$PATH"

如果不是,添加该路径的正确方法是什么?

感谢您提供的任何帮助!

PS。如果我可以提供任何其他信息,请告诉我

编辑

在 macedigital 的回答中看到 which npm 时,我运行了那个 ...

得到了这个:/usr/local/bin/npm

那是在我做第二个答案之前(即 ThiefMaster 的答案)。

再次运行which npm ...

得到了和以前一样的答案……

我回显$PATH 得到了这个:

/Users/name/.rvm/gems/ruby-1.9.3-p374/bin:/Users/name/.rvm/gems/ruby-1.9.3-p374@global/bin:/Users/name/ .rvm/rubies/ruby-1.9.3-p374/bin:/Users/name/.rvm/bin:/usr/local/share/npm/bin:/usr/local/bin:/usr/local/sbin: ~/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/git/bin

所以,看起来我已经安装了它?

因此,我该如何处理答案?我讨厌让它悬而未决,因为你们俩都非常乐于助人,我感到很遗憾,我没有提供 echo $PATH 信息就问了,因为那会告诉你我已经安装了它......

编辑 2

ls -la /usr/local/share/npm/bin 得到这个:

ls: /usr/local/share/npm/bin: 没有那个文件或目录

which -a npm 得到这个:/usr/local/bin/npm

编辑 3

ls -a /usr/local/bin/npm 得到这个:/usr/local/bin/npm

没有时间戳...

【问题讨论】:

    标签: node.js path terminal environment-variables


    【解决方案1】:

    简短的回答,这样做(注意我插入的附加冒号):

    export PATH="/usr/local/share/npm/bin:/usr/local/bin:/usr/local/sbin:~/bin:$PATH"

    $PATH 环境变量是 冒号 分隔的目录列表,如果您想运行没有完全限定路径的命令(例如运行 npm 而不必键入 @987654324 @)。

    您可以在实际保存 bash_profile 中的更改之前从终端尝试此操作。如果一切正常,which -a npm 将向您显示所有完全合格的路径。

    更新

    无需修改 $PATH 变量即可使用 npm。 homebrew install 建议将存储 npm 安装的二进制文件的目录添加到 $PATH 变量中,以便以后从命令行使用它们更方便。

    像 phantomjs、phonegap、express 等节点模块提供的二进制文件在更改后可在命令提示符下使用,而无需输入完整路径。

    【讨论】:

    • 现在如果有 npm 二进制文件,例如/usr/local/bin 中的 /usr/local/share/npm/bin 中的那个根本不会被使用...
    • 感谢投反对票,伙计。 which npm(有或没有上述更改)将显示第一个匹配的npm 二进制文件(按指定目录的顺序...)是否位于以及在哪里。
    • 没错,但他可能想要覆盖安装在其中的另一个(旧/过时)版本。无论如何,最好提一下您没有在答案中添加目录的原因。
    • 我明白你的意思,但认为只需指出缺少的冒号就不会那么混乱(“尝试安装 node.js”)。无论如何,我编辑了我的答案。
    • 您能否ls -la /usr/local/share/npm/bin 确保npm 命令实际上在此目录中。你也可以试试which -a npm,它会列出所有找到的条目,而不仅仅是第一个。由于上面的路径在/usr/local/bin 之前,它应该首先被选中。
    【解决方案2】:

    最干净的解决方案是在您发布的两行之间添加以下内容:

    export PATH="/usr/local/share/npm/bin:$PATH"
    

    这样所有内容都保持可读性,并且您可以像程序建议的那样将其添加到 PATH 中。如果您想撤消更改,只需删除该行而不是编辑可能很长的行。

    【讨论】:

      【解决方案3】:

      在路径中的顺序很重要。所以在想要的 npm 版本之前的任何东西仍然会导致问题。

      #adding in first place of the path, before anything else
      export PATH=/usr/local/bin:otherPathEntries:$PATH
      

      假设你想要的 npm 版本在 /usr/local/bin 中,检查所有使用 'which -a npm'

      【讨论】:

        猜你喜欢
        • 2015-08-19
        • 2016-01-06
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-07
        • 2020-07-27
        相关资源
        最近更新 更多