找不到二进制文件,但路径包含在 $PATH 中

找不到二进制文件,但路径包含在 $PATH 中

所以我尝试在 Ubuntu 10.04 上安装 Mercurial。首先我使用了 ppa repo,但得到了python路径错误,我放弃了。下一次尝试从源代码安装,一切顺利,只是找不到 hg:

$ hg
-bash: /usr/bin/hg: No such file or directory

但是,hg 安装在 /usr/local/bin/ 中:

$ which hg
/usr/local/bin/hg

PATH 中包含该目录,那么为什么找不到 hg?

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

如果我使用完整路径执行 hg 它会起作用:

$ /usr/local/bin/hg --version

非常感谢您的帮助!

答案1

Bash 维护着 中可执行文件位置的缓存$PATH。您曾经hg在 中/usr/bin,并从该 shell 中运行它。现在您已经删除了/usr/bin/hg。您需要告诉正在运行的 shell 忘记此位置:

hash hg

新的 shell 不会出现此问题,因为缓存不在 shell 实例之间共享。

相关内容