移动最近执行的可执行文件后(或者更常见的是,在我从某处卸载某个东西并在其他地方安装不同的版本之后),即使它仍然在PATH上,bash也找不到它。
例:
find sudo mv /usr/bin/find /usr/local/bin find
结果是:
bash: /usr/bin/find: No such file or directory
这真的很烦人,因为它发生在我身上几十次。 我怎样才能阻止这种情况发生?
为了解决眼前的问题:
hash -r
要阻止它再次发生:
set +h
禁用哈希(即内存中的caching)。
这可以放在一个bash启动文件中,比如/etc/bashrc 。
这个解决scheme的不足之处在于,如果你的networking文件系统安装缓慢并且在PATH上,它会降低速度。
真的,在我看来,这是一个古老的bash bug,应该在几年前就已经确定了,这只是一个解决方法。
如果新的副本不可执行,就会发生这种情况,所以请查看其权限并确保它们是正确的。
要永久解决这个问题,而不是完全禁用哈希,把这个在你的bashrc:
shopt -s checkhash
看到我的答案是如何解决眼前的问题。