哪个节点给出了非常奇怪的结果

时间:2019-02-13 07:47:25

标签: node.js linux

这似乎很愚蠢,但是今天当我运行which node时,它给了我与

完全不同的东西
/home/hearen/xxx/xxx/node-v0.10.28/bin/node

代替

/usr/local/bin/node

但是当我运行sudo which node时:

/usr/local/bin/node

我想知道这怎么可能?

我的愚蠢问题

  • which command如何为命令定位路径;
  • 根据路径正确选择了哪个节点?怎么样?
  • 在我的情况下,如何使用/usr/local/bin/node而不是当前的怪异/home/hearen/xxx/xxx/node-v0.10.28/bin/node?只需重置路径就能解决问题?
  • 为什么sudo which node给我正确的结果?我错过了什么吗?

任何帮助将不胜感激:)

更多详细信息

nvm

$ nvm --version
0.33.0


$ nvm list
         v6.6.0
         v9.1.0
->     v10.10.0
         system
default -> 6.6.0 (-> v6.6.0)
node -> stable (-> v10.10.0) (default)
stable -> 10.10 (-> v10.10.0) (default)
iojs -> N/A (default)
lts/* -> lts/dubnium (-> N/A)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.16.0 (-> N/A)
lts/carbon -> v8.15.0 (-> N/A)
lts/dubnium -> v10.15.1 (-> N/A)

回显$ PATH

/home/hearen/.nvm/versions/node/v10.10.0/bin:/home/hearen/XXX/XXX/oracle-jdk-1.8.0_121/bin:/home/hearen/XXX/XXX/apache-maven-3.3.1/bin:/home/hearen/XXX/XXX/node-v0.10.28/bin:/home/hearen/XXX/XXX/node-v0.10.28/bin:/home/hearen/XXX/XXX/mysql-5.6.39/bin:/home/hearen/XXX/XXX/yosolo-0.0.1-SNAPSHOT:/opt/mozjpeg/bin:/home/hearen/XXX/XXX/git-lfs-2.4.0:/home/hearen/XXX/WorkSpace/Develop/bin:/home/hearen/bin:/usr/local/bin:/usr/bin:/bin:/sbin:/home/hearen/.local/bin:/opt/jdk1.8.0_144/bin:/home/hearen/XXX/XXX/oracle-jdk-1.8.0_121/bin:/home/hearen/XXX/XXX/apache-maven-3.3.1/bin:/home/hearen/XXX/XXX/node-v0.10.28/bin:/home/hearen/XXX/XXX/node-v0.10.28/bin:/home/hearen/XXX/XXX/mysql-5.6.39/bin:/home/hearen/XXX/XXX/yosolo-0.0.1-SNAPSHOT:/opt/mozjpeg/bin:/home/hearen/XXX/XXX/git-lfs-2.4.0:/home/hearen/XXX/WorkSpace/Develop/bin:/home/hearen/bin:/usr/local/bin:/usr/bin:/bin:/sbin:/home/hearen/bin:/home/hearen/.local/bin:/opt/jdk1.8.0_144/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

1 个答案:

答案 0 :(得分:1)

Node Version Manager和类似软件包的工作方式是将的副本以及一些包装脚本和/或放在用户主目录(位于{{1下}}(默认情况下),然后将包含这些脚本的目录添加到您的 PATH 环境变量中。通常可以通过修改您的Shell启动脚本(即~/.nvm或其他文件,具体取决于您选择的Shell和当前配置)来完成此操作。

使用 sudo 运行~/.bashrc时显示不同路径的原因是,您很可能已全局安装了 node.js ,并且该目录包含了这些目录包装脚本不会添加到 root 用户的PATH环境变量中。

您可以通过比较以下命令的输出来确认这一点:

which node

echo $PATH

要使用节点的全局安装版本,可以从Shell启动脚本中删除源sudo echo $PATH的行(然后注销并重新登录-这将永久禁用nvm)或重置PATH环境变量。