Vimの$ PATHがターミナルと一致しません


10

私はMacVimを使用していますが、ターミナル(mvim)から起動しないと、$ PATHに.bash_profileで設定したものが含まれていません。デフォルト値があるようです/usr/bin:/bin:/usr/sbin:/sbin

OS X 10.5.8を実行しています。.vimrcに手動で設定できたとしても問題ありませんが、ターミナルと同じ場所からプルした方がよいでしょう。私はあるサイトが提案したことを試してみましたが、let $PATH += /blah/foo:/bar/etc無駄になりました。

編集/解決策:以下の私の回答を参照してください。MacVimにはこれを修正するオプションがあります。


回答:


12

MacVimは、通常のユーザーのカスタムドットファイルを無視する方法で$ PATHを取得しているようです。

なぜ彼らがこのようにするのを好むのは言えませんが、それは本当のようです。設定([詳細設定]タブの下)では、「ログインシェルでVimプロセスを起動する」ことを選択できますが$PATH、私にとっては少しだけ改善されています。

MacVimは、私が知ることができる最高のものを使用しています。MacVimは、/usr/libexec/path_helper(1)/etc/pathsファイルで見つかったアイテムと(2)/etc/paths.d/ディレクトリで見つかったその他のアイテムを順に使用します。ユーザーのホームディレクトリ(.profileなど)で行われた変更は無視されます。

簡単に言えば、OSXのデフォルトに加えて、自分自身をに追加するアプリケーションがあります/etc/paths.d。(たとえば、MacTexは私のシステムでそうします。)したがって、MacVimパスを調整したい場合、1つの方法は、項目を含むファイルをに追加することです/etc/paths.d。(それ/etc/paths以降は、システムの更新によって変更が取り消されるリスクがあるため、直接編集することはありません。)

これを知らせてくれてありがとう。MacVimにウィッシュリストのバグを提出するつもりです。


私もそう思ったでしょうが、ターミナルに表示される '/etc/paths.d/'をいくつか追加しましたが、MacVimでは表示されません。
ドーナツ

そして、実際には、私の '/ etc / paths'ファイルには、MacVimのパスよりも多くのファイルがあります。
ドーナツ

@Donut:まあ、それは奇妙です。私のマシンでは、に何かを追加すると/etc/paths.d、次にMacVimを起動したときに表示されます。そこにどんなフォーマットを入れていますか?それは、1行に1つの項目である必要があると思います。各行に$ PATHディレクトリー(たとえば、/ usr / texbin)があります。
Telemachus

私は最初に最初の段落を完全に逃しました。「ログインシェルでVimプロセスを起動する」を選択すると、うまくいきました。私の答えを見てください。
ドーナツ

7

ところで、「ログインシェルでVimプロセスを起動する」設定はMacVimでは利用できなくなりました(少なくともv7.3ではできません)。FinderからMacVimを起動すると間違ったパスが取得されますが、(「mvim」として)シェルから起動すると正しいパスが取得されます。


3

これは.bash_profileからソースされていませんが、これを.vimrcで使用できます。

let $PATH=$PATH . ':/blah/foo'

:が必要です。そうしないと、正しいPATH変数になりません。


試してみたところ、MacVimの$ PATHが変更されていないようです。私はまた、ターミナルでのVim(両方でそれをテストした/usr/bin/vim(Apple社)及び/opt/local/bin/vim(MacPortsのから)、それが不要と思われるの端末でVimはすでに私のドットファイルによって供給として適切なの$ PATHをピックアップ。。
テレマコス

1
私も無駄にこれを試してみました。
ドーナツ

2

これまで見なかったなんて信じられない。はい、信じられます。とにかく、MacVimにはこれを解決するオプションが付属しています。[設定]で、[ログインシェルでVimプロセスを起動する]をオンにします。それだけです、動作します。かっこいい。バカにして。

おっとっと

私が誤ってこの答えを書いてしまったのは、テレマコスがすでに正しい答えをくれたことに気づいていないからです。彼を答えにした。


並べ替えられてうれしい
Telemachus

1

このMac Dev Centerの記事役に立つかもしれません。


動作しません。何か間違っている可能性があります。この記事では、アプリの「情報プロパティリストファイル」に「LSEnvironment」プロパティを追加することを提案しています。これは、〜/ Library / Preferences / org.vim.MacVim.plistであると想定しています。'PATH'( 'path'と '$ PATH'も試した)をキーとして、パスに必要なものを文字列値として使用して、辞書にしました。まだいくつかの不可思議なソースからPATHを引っ張っているようです。plistファイルのスクリーンショット
ドーナツ

1

私は、paths.dディレクトリにファイルを追加しても問題ありませんでした。mysqlというファイルを追加しました。その内容は次のとおりです。

/ usr / local / mysql / bin [Return]

次に、このファイルをpaths.dディレクトリの下に置き、その所有権をroot:wheelに変更しました。これで、mysqlディレクトリが$ PATH変数に自動的に追加されます。

完全には調査しませんでしたが、(a)行末に[RETURN]を含めるか、(b)ファイルの所有権をrootに設定することが必要になる可能性があります。



1

今日これに遭遇しました。MacVimには「ログインシェル」オプションがなくなり、システム固有のファイルをユーザー固有の設定で編集するのはおおざっぱです。

vimオプションのみを使用したソリューションを次に示します(:help :!およびを参照:help shell)。

あなた~/.vimrcの行を追加

set shell=/bin/bash
set shellcmdflag=-l\ -c

これによりbash、(Mac)Vimからデフォルトのシェルが作成され、で-l呼び出されるコマンドにフラグ(ログインシェル)が追加されます:!{cmd}。を実行すると:shell、bashは「ログインシェルではないインタラクティブシェル」として起動されます。

機能させるには$PATH~/.bash_profilefor :!~/.bashrcforに設定する必要があります:shell。(参照INVOCATIONman bash

更新:これは他のコンピューターでは必要なかったので、根本的な原因が他にある可能性があります。


1
zshでも同様のことができます。で定義$PATH.zprofile、またはに-lフラグを含めます。set shellset shellcmdflag
jladan

0

MacよりもUNIXの方が詳しいので、次のアドバイスが機能する場合と機能しない場合があります。これを.vimrcファイルに入れてみてください:

! source ~/.bash_profile

これでうまくいくかもしれませんが、多少の注意点があります。.bash_profileは1度だけソースされることを意図しています。いくつかの非べき等コマンド(1度だけ実行する必要があるもの)が含まれている場合があります。適例:

$PATH += /blah/foo:/bar/etc

呼び出される回数$PATHが増えるほど、より大きく冗長な取得になります。ただし、それがそれほど重要でない場合は、unixでの推奨事項は、1回限りのコマンドをファイルから~/.bashrc実行source ~/.bashrcすること.vimrcです。


.bash_profileまたは.bashrcのソーシングは機能しませんでした。手動で実行してみました:source .bash_profileが、ファイル内のすべてのコマンドに対して「エディターコマンドではありません」というエラーが表示され、.bashrcでも同じエラーが発生しました。
ドーナツ

申し訳ありません...私は何を考えていました...あなたは試すかもしれません!ソース.bash_profile
David Berger、

.bash_profileと.bashrcの両方を試しましたが、まだ成功していません。PATHを変更するために.bash_profileで使用しているものは次のとおりです: 'PATH = / usr / local / bin:/Applications/Espresso.app/Contents/SharedSupport/Tools /:/ Applications / MacVim /:$ PATH' .bashrc: 'export PATH = / Applications / MAMP / bin / php5 / bin:$ PATH'。そして、実際に私のターミナルセッションに影響を与えるのは.bash_profileです。
ドーナツ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.