Lorsque j'exécute un programme sans spécifier le chemin complet de l'exécutable, et que Bash doit rechercher les répertoires dans $PATH
pour trouver le binaire, il semble que Bash se souvienne du chemin dans une sorte de cache. Par exemple, j'ai installé une version de Subversion depuis la source vers /usr/local
, puis tapez svnsync help
à l'invite Bash. Bash a localisé le binaire /usr/local/bin/svnsync
pour "svnsync" et l'a exécuté. Puis quand j'ai supprimé l'installation de Subversion dans /usr/local
et réexécuté svnsync help
, Bash répond :
bash: /usr/local/bin/svnsync: No such file or directory
Mais, lorsque je démarre une nouvelle instance de Bash, il trouve et exécute /usr/bin/svnsync
.
Comment vider le cache des chemins d'accès aux exécutables ?
Réponse acceptée :
bash
met en cache le chemin complet d'une commande. Vous pouvez vérifier que la commande que vous essayez d'exécuter est hachée avec le type
commande :
$ type svnsync
svnsync is hashed (/usr/local/bin/svnsync)
Pour vider tout le cache :
$ hash -r
Ou une seule entrée :
$ hash -d svnsync
Pour plus d'informations, consultez help hash
et man bash
.