哪个节点给出了很奇怪的结果
也许这看起来很傻,但是当我今天运行which node
时,它给了我一些完全不同的东西
/home/hearen/xxx/xxx/node-v0.10.28/bin/node
而不是像
/usr/local/bin/node
但是,当我运行sudo which node
时:
/usr/local/bin/node
我想知道这会怎么样?
My Silly Questions
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)
echo $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
回答如下:
Node Version Manager和类似软件包的工作方式是将node.js和一些包装脚本和/或symlinks的副本放在用户主目录中(默认情况下位于~/.nvm
下),并将包含这些脚本的目录添加到PATH环境变量中。这通常通过修改shell启动脚本(即~/.bashrc
或其他文件,具体取决于您选择的shell和当前配置)来完成。
当您使用sudo运行which node
时,它显示不同路径的原因是您最有可能全局安装node.js,并且包含这些包装器脚本的目录不会添加到root用户的PATH环境变量中。
您可以通过比较以下命令的输出来确认:
echo $PATH
和
sudo echo $PATH
要使用全局安装的节点版本,可以从shell启动脚本中删除从nvm.sh
获取的行(并注销并重新登录 - 这将永久禁用nvm)或重置PATH环境变量。