Я знаю о 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, так как почти все время дополнительный тест не требуется. Однако я не думаю, что стоимость теста значительна.