Alban’s blog

September 12, 2007

Bash: la commande hash -r

Filed under: Uncategorized — alban @ 7:25 pm

A quoi sert la commande hash -r dans bash? A ceci:

# cat /sbin/toto #!/bin/bash echo toto # toto toto # mv /sbin/toto /usr/sbin/toto # toto bash: /sbin/toto: Aucun fichier ou répertoire de ce type # hash -r # toto toto #

Bash ne recherche pas votre programme dans $PATH à chaque fois. Il conserve en mémoire le chemin des programmes déjà exécutés. S’il ne trouve pas le chemin de la commande en mémoire, il recherche réellement dans tous les répertoires du $PATH. Mais si l’information est en mémoire, alors il utilise cette information en espérant ne pas se tromper. Il peut se tromper, comme dans cet exemple où il ne trouve plus le programme toto. Il se peut aussi que l’ordre de recherche dans le $PATH ne soit pas respecté.

Pour tcsh, c’est le même principe mais la commande à utiliser est rehash.

2 Comments »

  1. Il me semble qu’une différence entre bash et tcsh là dessus, c’est que bash re-parcourt les répertoire du $PATH avant de dire qu’il ne trouve pas la commande. tcsh pas: si on rajoute un programme dans le PATH, il faut faire un "rehash". Ce qui fait que "rehash" est quasi-incontournable avec tcsh, alors que je ne me rappelle pas avoir eu besoin de "hash -r". (Les choses ont peut-être évolué, ça doit bien faire 5 ans que je n’ai pas utilisé tcsh.)

    (Tu peux me pinger si tu réponds au commentaire?)

    Comment by Lucas — September 12, 2007 @ 8:32 pm

  2. J’ai répondu plus en détail sur mon blog: http://www.lucas-nussbaum.net/bl… (apparemment le trackback n’est pas passé)

    Comment by Lucas — September 13, 2007 @ 6:41 pm

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress