Comment `quelle cmd`! = Cmd?

2

Quelqu'un peut-il expliquer cela?

$ vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Jul 12 2010 12:47:31)
$ `which vim` --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 13 2011 22:52:17)

Je viens de compiler la dernière version de vim et de l’installer $HOME/bin, qui est le premier chemin d’accès $PATH. which vimrenvoie le chemin correct: /home/user/bin/vimcependant, lorsque je l'exécute, vimil se lance /usr/bin/vim.

J'ai lancé un autre xterm et le problème a disparu, mais je suis toujours curieux de savoir comment le terme précédent est entré dans un état aussi étrange. Des idées?

mwcz
la source

Réponses:

5

Sous UNIX, lorsque vous exécutez une commande, le shell enregistre le chemin où il a trouvé le binaire. Si vous modifiez ensuite le chemin ou installez une version différente du répertoire plus tôt dans celui-ci, le shell ne le trouvera pas car il ne cherchera pas les commandes déjà trouvées.

Si vous aviez tapé hash -ravant de comparer vim et vim, vous n'auriez pas vu cet écart.

Michael Dillon
la source