3

これがここに行くべきか、別のスタック交換に行くべきかは完全にはわかりませんが、ここに行きます:

私のシェルからの次の出力を参照してください。

$ 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

このシェルセッション中ににインストールvimしましたか?/opt/local/binBash(およびおそらく他のシェル)は、パスルックアップの結果をハッシュテーブルに保存します。を要求することでこれを確認できますtype vim。これはwhich、このハッシュテーブルが存在する場合に結果を返すビルトインであることを除けば、似ています。さらに便利typeなことに、シェルによって実行されるものを正確に返します。

hashビルトインを使用して、保存されたルックアップを具体的にクエリすることもできます。を使用hash -t vimして、のハッシュテーブル内のエントリを確認しvim、を使用してこのハッシュテーブルhash -d vimから削除vimし、シェルが$PATH次回に再度検索できるようにします。


元の説明を再確認したところ、which vim実際に戻ってきたことがわかり/usr/bin/vimました。上記whichで説明したハッシュテーブルを使用していないため、これは実際には問題が異なっていたことを示しています。おそらく$PATH、最初のコンポーネントにある種の目に見えないキャラクターがありましたか?

于 2013-01-20T21:41:51.160 に答える