2

Я знаю о hash внутренней команды bash и о том, как можно использовать hash -d или hash -r чтобы забыть запомненные местоположения. Есть ли способ дать команду bash автоматически делать это всякий раз, когда он получает "промах кэша", то есть когда запоминаемое местоположение исчезает (no such file or directory), bash очищает запомненное местоположение и пытается снова?

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .