我正在使用n工具来更新我当前版本的节点,但发生了一些奇怪的事情。
我运行了sudo n latest
该程序,理论上会获取最新版本的 Node(v0.12.0
并将其安装在我的某个地方)$PATH
。
但是,运行node -v
显示v0.10.25
。我认为在我的路径上的其他地方还有另一个版本的 node exe。
which node
显示/usr/local/bin/node
。
$ cd /usr/local/bin/node
$ node -v
v0.10.25
$ ./node -v
v0.12.0
它就在那里,安装好了,/usr/local/bin
就在我的上面$PATH
。
在什么情况下会which
指向错误的二进制文件?
/bin
我已重新启动 bash,并确保或中没有无效节点二进制文件/usr/bin
。还确保它不是符号链接。
$ ls -lah | grep node
-rwxr-xr-x 1 root root 20M Feb 14 14:56 node
而且它确实是二进制的。
$ file node
node: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
有想法吗?
答案1
您寻找复杂的解决方案却忽略了显而易见的东西。
我切换到zsh
查看问题是否出在 bash 上。节点版本是正确的。
我曾alias node=nodejs
在~/.bash_aliases
......
显然which
没有考虑到这一点。我认为 Ubuntu 上 Node 的 apt-get 包存在一些问题,它创建了nodejs
二进制文件而不是node
。显然我给它起了别名,而不是符号链接。
学过的知识。