Když spustím program bez zadání úplné cesty ke spustitelnému souboru a Bash musí prohledat adresáře v $PATH
k nalezení binárního souboru se zdá, že si Bash pamatuje cestu v nějaké mezipaměti. Například jsem nainstaloval sestavení Subversion ze zdroje do /usr/local
a poté zadali svnsync help
na výzvu Bash. Bash našel binární kód /usr/local/bin/svnsync
pro „svnsync“ a provedl jej. Když jsem pak smazal instalaci Subversion v /usr/local
a znovu spusťte svnsync help
, Bash odpovídá:
bash: /usr/local/bin/svnsync: No such file or directory
Ale když spustím novou instanci Bash, najde a spustí /usr/bin/svnsync
.
Jak vyčistím mezipaměť cest ke spustitelným souborům?
Přijatá odpověď:
bash
ukládá do mezipaměti úplnou cestu k příkazu. Můžete ověřit, že příkaz, který se pokoušíte provést, je hashován pomocí type
příkaz:
$ type svnsync
svnsync is hashed (/usr/local/bin/svnsync)
Vymazání celé mezipaměti:
$ hash -r
Nebo jen jeden záznam:
$ hash -d svnsync
Další informace najdete v help hash
a man bash
.