Le shell Bash a une commande intégrée hash -r
pour réinitialiser le $PATH
cache interne des exécutables.
Quand est-il nécessaire d'utiliser cette commande?
En relation: Comment ressasser les exécutables dans $ PATH avec bash
Le shell Bash a une commande intégrée hash -r
pour réinitialiser le $PATH
cache interne des exécutables.
Quand est-il nécessaire d'utiliser cette commande?
En relation: Comment ressasser les exécutables dans $ PATH avec bash
Réponses:
hash
est une commande bash intégrée. La table de hachage est une fonctionnalité de bash qui l'empêche d'avoir à rechercher $ PATH chaque fois que vous tapez une commande en mettant en cache les résultats en mémoire.
Ainsi, lorsque les informations mises en cache / stockées ne sont plus mises à jour ou valides, vous devrez peut-être les réinitialiser.
En savoir plus sur cette belle réponse sur Unix stackexchange .
Si vous avez précédemment exécuté un programme dans cette invocation de shell, puis installé une autre version de celui-ci dans un répertoire antérieur de votre $PATH
liste de recherche, vous devez réinitialiser le hachage afin qu'il le trouve au nouvel emplacement. Sinon, il utilisera le cache pour trouver le programme à l'ancien emplacement.
Vous devez également réinitialiser le hachage si un programme est installé dans 2 répertoires de votre $PATH
, et vous supprimez la copie de l'emplacement précédent après l'avoir exécuté. Sinon, il essaiera de le trouver à cet emplacement et signalera "Aucun fichier ou répertoire" (personnellement, je pense qu'il devrait automatiquement effacer le hachage et effectuer une recherche complète lorsque cela se produit, mais cela ne s'est pas produit lorsque j'ai essayé ).
Notez que vous n'avez pas besoin de réinitialiser l'intégralité du hachage, vous pouvez utiliser:
hash name
pour le forcer à mettre à jour l'entrée de cache uniquement pour ce nom, ou:
hash -d name
pour supprimer uniquement cette entrée de cache. Ceux-ci laissent toutes les autres entrées de cache seules.
Vous n'avez pas besoin d'utiliser hash -r
après la modification $PATH
, il est réinitialisé automatiquement lorsque cela est fait.