不完全确定这是否应该在这里或另一个堆栈交换,但这里是:
从我的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, 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 root@apple.com
正如您所看到的,/ opt / local / bin / vim应优先于which vim
,因为$ PATH定义,但它没有。
任何人都有线索?
最后,我注意到我的.zshrc中有一个export PATH=....
。因此,如果有人遇到同样的问题,请先检查一下;)
答案 0 :(得分:5)
您是否在此shell会话期间将vim
安装到/opt/local/bin
? Bash(可能还有其他shell)将路径查找的结果保存到哈希表中。您可以通过询问type vim
来验证这一点。这就像which
,除了它是一个内置函数,如果它们存在,将返回此哈希表的结果。更有用的是,type
准确地返回shell将执行的内容。
您还可以使用hash
内置来专门查询已保存的查找。使用hash -t vim
查看vim
哈希表中的条目,并使用hash -d vim
从此哈希表中删除vim
,允许shell在{{{{}}中查找下次再次1}}。
我刚刚重新检查了您的原始说明,发现$PATH
实际返回了which vim
。由于/usr/bin/vim
不使用我上面描述的哈希表,这实际上表明您的问题不同。也许你的which
在第一个组件中有某种不可见的特征?