如何让 bash 自动刷新程序位置的缓存?

如何让 bash 自动刷新程序位置的缓存?

我知道 bash 内部命令hash以及如何使用hash -dhash -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 的执行速度,因为大多数情况下,额外的测试都是不必要的。不过,我认为测试的成本并不高。

相关内容