Pas tout à fait sûr si cela devrait aller ici ou un autre échange de stack, mais voici:
voir la sortie suivante de mon shell:
$ echo $PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin $ which vim /usr/bin/vim $ /opt/local/bin/vim --version VIM - Vi IMproved 7.3 (2010 Aug 15, comstackd Jan 9 2013 03:19:25) MacOS X (unix) version Included patches: 1-244, 246-762 $ vim --version VIM - Vi IMproved 7.3 (2010 Aug 15, comstackd Aug 22 2012 15:36:46) Comstackd by [email protected]
Comme vous pouvez le voir, / opt / local / bin / vim doit avoir la priorité sur le which vim
défini par la définition de $ PATH, mais ce n’est pas le cas.
Quelqu’un a une idée?
Au final, j’ai remarqué que j’avais un export PATH=....
dans mon fichier .zshrc. Donc, si quelqu’un a le même problème, vérifiez d’abord cela;)
Avez-vous installé vim
dans /opt/local/bin
lors de cette session shell? Bash (et probablement d’autres shells) enregistre les résultats des recherches de chemin dans une table de hachage. Vous pouvez le vérifier en demandant le type vim
. C’est comme ça, sauf que c’est une commande interne qui retournera les résultats de cette hashtable s’ils existent. Plus utilement, le type
renvoie précisément ce qui sera exécuté par le shell.
Vous pouvez également utiliser le hash
intégré pour interroger spécifiquement les recherches enregistrées. Utilisez hash -t vim
pour voir ce que l’entrée est dans la table de hachage pour vim
, et utilisez hash -d vim
pour supprimer vim
de cette hashtable, permettant ainsi au shell de le retrouver dans $PATH
la prochaine fois.
Je viens de vérifier votre description d’origine et j’ai remarqué que which vim
réellement /usr/bin/vim
. Étant donné which
ne pas utiliser la table de hachage que j’ai décrite ci-dessus, cela suggère que votre problème était différent. Peut-être que votre $PATH
avait une sorte de caractère invisible dans le premier composant?