什么决定了系统搜索文件的路径?

什么决定了系统搜索文件的路径?

我想得到新项目管理上班。在此过程中,我似乎安装了它的两个版本:一个损坏的版本安装在 ~/bin 中,另一个我刚刚编译并运行make install以将其放入/usr/local/bin/npm.

因此,我将整个 ~/bin 文件夹移动到 ~/old/bin ...但当我npm在 ~/bin 中运行系统搜索时:

$ which npm
/usr/local/bin/npm
$ alias npm
-bash: alias: npm: not found
$ npm
-bash: /home/ubuntu/bin/npm: No such file or directory
$ echo $PATH
/home/ubuntu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
$

是什么导致 Ubuntu 在 中查找 npm ~/bin/npm?我使用的是 Ubuntu 11.10。我不知道这个问题是否是ubuntu特有的,如果需要的话可以移至askubuntu。

我确实在 PATH 中看到了 ~/bin ,但据我所知,这仅意味着如果 npm 存在于 ~/bin 中,那么它就会使用它......但为什么 bash 坚持在那里专门寻找它?/usr/local/bin/npm尽管该命令确实找到了它,但为什么它找不到which它?

答案1

可执行文件先前已知的位置可能已由 shell 进行了哈希处理。重置 shell 的缓存应该hash -r可以解决该问题。

如果您不想重置整个缓存,可以删除npm使用的单个条目hash -d npm

相关内容