Quando eseguo un programma senza specificare il percorso completo dell'eseguibile, e Bash deve cercare le directory in $PATH
per trovare il binario, sembra che Bash ricordi il percorso in una sorta di cache. Ad esempio, ho installato una build di Subversion dal sorgente a /usr/local
, quindi digitato svnsync help
al prompt di Bash. Bash ha individuato il binario /usr/local/bin/svnsync
per "svnsync" e l'ho eseguito. Poi quando ho cancellato l'installazione di Subversion in /usr/local
e rieseguito svnsync help
, Bash risponde:
bash: /usr/local/bin/svnsync: No such file or directory
Ma, quando avvio una nuova istanza di Bash, trova ed esegue /usr/bin/svnsync
.
Come posso svuotare la cache dei percorsi degli eseguibili?
Risposta accettata:
bash
memorizza nella cache il percorso completo di un comando. Puoi verificare che il comando che stai tentando di eseguire sia sottoposto a hash con il type
comando:
$ type svnsync
svnsync is hashed (/usr/local/bin/svnsync)
Per svuotare l'intera cache:
$ hash -r
O solo una voce:
$ hash -d svnsync
Per ulteriori informazioni, consulta help hash
e man bash
.