【问题标题】:The difference link between "/usr/bin/npm" and " /usr/local/bin/npm"“/usr/bin/npm”和“/usr/local/bin/npm”的区别链接
【发布时间】:2020-06-03 12:03:50
【问题描述】:

今天,在Centos7中,我卸载了nodejsnpm,然后通过Linux Binaries (x64)安装。

解压后移动到/usr/local/nodejs。为了使其全球化,我将软链接配置如下:

#ln -s /usr/local/nodejs/bin/npm /usr/local/bin/
#ln -s /usr/local/nodejs/bin/node /usr/local/bin/

让我困惑的是:

#nodejs -v

好的。但是,但是,下面的命令:

#npm -v

带来命令找不到的错误。

尝试一些方法:

之后

#ln -s /usr/local/nodejs/bin/npm /usr/bin/
#npm -v

此命令运行正常。有什么不同?

欢迎提出任何建议。

【问题讨论】:

  • 看起来 /usr/bin 在您的 PATH 中(应该是),而 /usr/local/bin 不在。
  • which nodejs 告诉你什么?
  • 我不检查它。但是重装之后。 nodejs -v,它显示了它的最新版本。
  • 运行nodejs -v 不会告诉您正在执行哪个nodejs,而只是告诉您shell 正在调用的可执行文件的版本。尝试which nodejstype nodejs 找出正在执行的可执行文件和/或函数。

标签: shell centos7


【解决方案1】:

如果您使用的是 bash,则您家中有一个名为 .bash_profile 的文件。此命令运行一组命令来配置您的 bash 环境。

此外,/etc/profile.d 中的所有 .sh 文件都会在您执行的每个会话上执行。

因此,在这些脚本中,我们有一个名为 PATH 的环境变量,它是在 bash 启动时设置的。

如果您尝试执行echo $PATH,您将看到一组用冒号分隔的目录:

每次您尝试运行命令时,bash 都会检查此 $PATH 变量中设置的所有目录。

如果没有找到你的电话,我们可以得到两个假设:

  1. 您的文件或链接所在的路径不包含在$PATH dir 中。

  2. 您的文件不可执行(需要chmod)。

因此,请检查您的$PATH 以查看您的命令是否链接在正确的位置,是否有有效文件,最后,执行权限是否有效。

【讨论】:

  • 感谢您的回答。但是为什么 nodejs -v ok,npm -v wrong 呢?它们都链接到 /usr/local/bin 路径?!
  • 尝试检查您的链接是否指向运行 ls /usr/local/bin/npm 的有效文件。检查符号链接是否指向存在的文件。此外,请检查您是否可以从您的/usr/loca/nodejs/bin/npm 运行您的npm 命令。
  • 好的。我现在无法连接办公室服务器,我稍后会尝试。再次感谢。
  • 我又试了一次。链接到 /usr/local/bin/npm 也可以。也感谢您的解释。
猜你喜欢
  • 2014-03-27
  • 2013-04-22
  • 1970-01-01
  • 2020-06-21
  • 1970-01-01
  • 2014-08-05
  • 2021-03-25
  • 2014-12-17
  • 2023-03-05
相关资源
最近更新 更多