我知道 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 的执行速度,因为大多数情况下,额外的测试都是不必要的。不过,我认为测试的成本并不高。