Como obter o bash para atualizar automaticamente o cache dos locais dos programas?

2

Estou ciente do comando interno bash hash e como é possível usar hash -d ou hash -r para esquecer os locais lembrados. Existe uma maneira de instruir bash para fazer isso automaticamente sempre que receber um "cache miss", ou seja, quando o local lembrado desaparecer ( no such file or directory ) bash limpará o local lembrado e tentará novamente?

    
por Gerry Lufwansa 26.03.2014 / 11:25

1 resposta

6

Você pode conseguir isso com a opção 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.

Você pode tornar essa a opção para todas as shells bash, colocando-a na variável de ambiente 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.

Configurar esta opção pode diminuir um pouco a execução do bash, já que quase o tempo todo, o teste extra é desnecessário. No entanto, não acho que o custo do teste seja significativo.

    
por 27.03.2014 / 06:28

Tags