2013-01-20 6 views
2

Pas tout à fait sûr que cela devrait aller ici ou un autre échange de la pile, mais voilà:

voir la sortie suivante de ma coquille:

$ 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, compiled 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, compiled Aug 22 2012 15:36:46) 
Compiled by [email protected] 

Comme vous pouvez le voir,/opt/local/bin/vim devrait avoir la priorité sur which vim selon la définition $ PATH, mais ce n'est pas le cas.

Quelqu'un a une idée?


En fin de compte, je remarqué que j'avais un export PATH=.... dans mon .zshrc. Donc si quelqu'un a le même problème, vérifiez d'abord;)

+0

Ce pourrait être un alias qui entrave le processus? –

+0

/etc/paths détermine le [ordre de priorité] (http://daniel.hepper.net/blog/2011/02/change-order-of-path-entries-on-mac-os-x/). – rstackhouse

Répondre

5

Avez-vous installé vim dans /opt/local/bin pendant 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 type vim. C'est comme which sauf que c'est un builtin qui retournera les résultats de cette hashtable s'ils existent. Plus utilement, type renvoie précisément ce qui sera exécuté par le shell.

Vous pouvez également utiliser l'élément intégré hash 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 utiliser hash -d vim pour enlever vim de cette table de hachage, ce qui permet la coquille de le regarder dans $PATH à nouveau la prochaine fois.


Je viens revérifiés votre description originale et a remarqué que which vim effectivement retourné /usr/bin/vim. Comme which n'utilise pas la hashtable 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?

+0

Pouce. J'ai oublié que j'ai mon PATH défini dans mon .zshrc. Merci pour vos conseils, j'ai appris quelque chose de nouveau :) –