11

例えば、

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/bin:~/bin:/usr/local/Cellar/python3/3.2.3/bin

$ vim 
:! echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:~/bin:/usr/local/Cellar/python3/3.2.3/bin

私はそれらが同じであることを期待していました。なぜ違うのですか?

それが違いを生む場合、これが私のシェル、vimのバージョン、およびOSのバージョンです。

$ echo $SHELL
SHELL=/usr/local/bin/zsh

$ /usr/local/bin/zsh --version
zsh 5.0.0 (x86_64-apple-darwin12.0.0)

$ vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jun 20 2012 13:16:02)
Compiled by root@apple.com


$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.8.2
BuildVersion:   12C60

(Mountain Lion)
4

4 に答える 4

12

これは、Apple が OS X 10.5 Leopard で導入した既知の問題です。

Bash または Zsh を使用していて、非対話型シェルを使用している場合、影響を受けます。

実行sudo chmod ugo-x /usr/libexec/path_helperすると問題は解決しますが、その理由については記事を参照してください。

このSOの回答から

于 2013-10-22T14:48:31.323 に答える
4

stackoverflow と stackexchange には、同様の質問がたくさんあります。

シェルは、起動時に指定された引数に応じて、さまざまな *rc ファイルを実行します。したがって、適切な引数でシェルを起動するように Vim をセットアップする必要があります。

以下はbashで役立ちます.zshにも同様のフラグがあるとほぼ確信しています。

set shell=bash\ -i

$ man zsh正しいフラグと正しい実行順序については、を参照してください。

于 2012-11-15T18:16:05.583 に答える
3

zsh でこれを解決できず、最終的に vim シェルに bash を使用することになりました。

これが私がしたことです:

  1. 動作するように変更.zshrcしましたbash
  2. ln -s .zshrc .bashrc
  3. set shell=bash私の.vimrcファイルに追加されました

そして今、私のvimコマンドラインPATHは私のzshシェルPATHと同じです。

于 2012-11-19T19:18:30.237 に答える
-1

Mac や zsh は使用していませんが (Linux を使用しています)、MATE メニューから gvim を実行したときにこの問題に遭遇しました。

これを.vimrcに追加して解決しました:

if $PATH !~ "\.rbenv"
    let $PATH="/home/username/.rbenv/shims:/home/username/.rbenv/bin:" . $PATH
endif

これにより、端末から vim を実行する場合に設定を回避できます。そうしないと、rbenv パスが 2 回含まれてしまいます。

アプリケーションを端末経由で実行するように設定しようとしましたが、それは役に立ちませんでした。

于 2015-02-15T08:07:14.500 に答える