3

不完全确定这是否应该在这里或另一个堆栈交换,但这里是:

从我的 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 定义,但它没有。

有人有线索吗?


最后,我注意到我的export PATH=.....zshrc 中有一个。因此,如果有人有同样的问题,请先检查;)

4

1 回答 1

6

你在这个 shell 会话期间安装vim了吗?/opt/local/binBash(可能还有其他 shell)将路径查找的结果保存到哈希表中。您可以通过询问来验证这一点type vim。这就像which除了它是一个内置函数,如果它们存在,它将从这个哈希表返回结果。更有用的是,type精确返回 shell 将执行的内容。

您还可以使用hash内置函数专门查询保存的查找。用于hash -t vim查看哈希表中的条目是什么vim,并用于从该哈希表hash -d vim中删除,以便 shell下次再次vim查找它。$PATH


我刚刚重新检查了您的原始描述,发现which vim实际上返回了/usr/bin/vim。由于which不使用我上面描述的哈希表,这实际上表明您的问题有所不同。也许您$PATH在第一个组件中有某种隐形字符?

于 2013-01-20T21:41:51.160 回答