Я знаю о hash внутренней команды bash и о том, как можно использовать hash -d или hash -r чтобы забыть запомненные местоположения. Есть ли способ дать команду bash автоматически делать это всякий раз, когда он получает "промах кэша", то есть когда запоминаемое местоположение исчезает (no such file or directory), bash очищает запомненное местоположение и пытается снова?
2
1 ответ
6
Вы можете достичь этого с помощью опции 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, поместив ее в переменную окружения 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, так как почти все время дополнительный тест не требуется. Однако я не думаю, что стоимость теста значительна.
