![如何让 bash 自动刷新程序位置的缓存?](https://linux22.com/image/1402787/%E5%A6%82%E4%BD%95%E8%AE%A9%20bash%20%E8%87%AA%E5%8A%A8%E5%88%B7%E6%96%B0%E7%A8%8B%E5%BA%8F%E4%BD%8D%E7%BD%AE%E7%9A%84%E7%BC%93%E5%AD%98%EF%BC%9F.png)
我知道 bash 内部命令hash
以及如何使用hash -d
或hash -r
忘记记住的位置。有没有办法指示bash
在发生“缓存未命中”时自动执行此操作,即当记住的位置消失时 ( no such file or directory
)bash
将清除记住的位置并重试?
答案1
您可以使用以下checkhash
选项实现此目的:
shopt -s checkhash
checkhash
If set, bash checks that a command found in the hash table exists
before trying to execute it. If a hashed command no longer
exists, a normal path search is performed.
你可以通过将其放入环境变量中,使其成为所有 bash shell 的选项BASHOPTS
:
BASHOPTS
A colon-separated list of enabled shell options.
Each word in the list is a valid argument for the
-s option to the shopt builtin command.
设置此选项可能会稍微减慢 bash 的执行速度,因为大多数情况下,额外的测试都是不必要的。不过,我认为测试的成本并不高。