Finder起動アプリケーションのPATHを設定する方法


70

Finderを介して起動されたアプリは、で設定されたPATHを尊重しないようです.bash_profile。したがって、IDE(Intellij)からコードを実行しようとすると/usr/local/bin、のプログラムにアクセスできなくなります。これは通常、ターミナルのパスに追加されます。

どうやら.MacOSX/environment.plist 道にするために使用しないこれを行うには、それはもはやライオンで動作します。

PATHFinderで起動するアプリケーション用に設定するにはどうすればよいですか?


受け入れられたソリューションが10.8で動作することを確認しますか?
ソリン

1
@SorinSbarnea(私はこれが古いことを知っていますが)提案されたドック再起動ハックも使用すると、OS X 10.8.3で現在受け入れられている答えが機能することを確認できます。(ただし、別の環境変数を設定していますが、重要な場合ではありません。)$PATH
Calrion

< stackoverflow.com/questions/829749/… > も参照してください。それはほとんど重複しています。
フィリップクンツ

回答:


38

10.8ではなく10.7を使用している場合、以下の解決策はうまく機能します。

私は日食でも同じ問題を抱えていましたが、今では次のようなものを自分に追加して.bash_profile、それが機能しました。

export PATH=some_path:another_path
launchctl setenv PATH $PATH

元のパスをそのまま使用する場合

p=$(launchctl getenv PATH)
launchctl setenv PATH /my/new/path:$p

代わりに(または単にlaunchctl setenv PATH /my/new/path:$(launchctl getenv PATH))。

注: launchctl PATHの変更は、Dockが「再起動」されるまで有効になりません。次のコマンドで現在のDockプロセスを強制終了すると、新しいDockプロセスが自動的に開始されます。

killall Dock

1
最終的には「launchctl setenv PATH $ PATH」を使用しました。「$ p」を介して既存のlaunchctlパスを追加すると、シェルを開くたびにパスが繰り返されます。
カフェイン

4
これは、OS X 10.8上では動作しません - EclipseとのIntelliJを試してみました-実行中のset|grep PATH彼らからは、常に返しますPATH=/usr/bin:/bin:/usr/sbin:/sbin
ソリン

1
私のどちらにも機能しません(10.8.1)
nohillside

4
実行後にドックを再起動してみてくださいlaunchctlosascript -e 'tell app "Dock" to quit'。それは私のためにそれを修正するようでした。
イヴァンアンドラス

2
これは10.12でも機能しますが、1回限りです。マシンを再起動すると、効果は失われます。
ドーバー

19

「新しい」問題への質問に答えるために、別の答えを書くことにしました。サンプルで説明する方が簡単だからです。

選択したツール(IDE)の起動時に環境変数をロードする1つの方法は、Eclipseで実行できるようなものです。ツール(IDE)にも同様の構造がなければならないと思います。

Eclipseでどのように行うことができますか-https://stackoverflow.com/questions/829749/launch-mac-eclipse-with-environment-variables-set

(環境変数について少し書き直しました)

Eclipseアプリケーションバンドルディレクトリに「eclipse.sh」という空のテキストファイルを作成します /Applications/eclipse/Eclipse.app/Contents/MacOS

テキストエディターでeclipse.shを開き、次の内容を入力します。

#!/bin/sh

. ~/.bash_profile

logger "`dirname \"$0\"`/eclipse"

exec "`dirname \"$0\"`/eclipse" $@

ターミナルで、シェルスクリプトeclipse.shの実行可能フラグを設定します。つまり:

chmod +x /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.sh

Eclipse.app Info.plistを開き、キーCFBundleExecutableの値をeclipseからeclipse.shに変更します。

MacOS Xは、Eclipse.appのInfo.plistが変更されたことを自動的に検出しません。そのため、lsregisterコマンドを使用して、ターミナルでLaunchServiceデータベースを強制的に更新する必要があります。

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app

次にDockまたはFinderからEclipse.appを起動するときに、環境変数を設定する必要があります。


明確で正確な説明、および6年以上たった今でもHigh Sierra 10.13.xでこれが機能するという事実のために+1。
dgnuff

16

OS X 10.10 Yosemiteでは、次のコマンドを使用しました。

sudo launchctl config user path <my path setting>

彼がすべてのユーザーの launchtl PATHを設定することに注意してください。これは私のユースケースでうまくいきました。効果を有効にするには、マシンを再起動するように求められることに注意してください。


これは、ログイン時に再度開かれる(シャットダウン時に開いていた)アプリケーションのPATH環境変数に影響を与えないようです。
ブレヒトマキエル16

4
この答えは私のために働いた。具体的には、Brew管理の実行可能ファイルにアクセスするにはsudo launchctl config user path /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin、再起動する必要がありました。
JP

これは、Homebrewベースのアプリケーションに/ usr / local / binを追加する場合の最良の回答です。皆さん、この回答に投票してください!10.11および10.12でも動作します(10.13ではテストされていません)。environment.plistほとんどの場合、台無しにする必要はありません。
マークエディントン

これは私にとってはうまく
いき

11

マウンテンライオンのすべて/etc/paths/etc/launchd.conf編集あらゆる有効になりません!

Appleの開発者フォーラムはこう言っています:

「.app自体のInfo.plistを変更して、必要な環境変数を含む「LSEnvironment」辞書を含めます。

〜/ .MacOSX / environment.plistはサポートされなくなりました。 "

そのため、アプリを直接編集しましたInfo.plist(「AppName.app」(この場合はSourceTree)を右クリックしてから、「Show package contents」)

パッケージの内容を表示

と呼ばれる新しいキー/辞書ペアを追加しました:

<key>LSEnvironment</key>
<dict>
     <key>PATH</key>
     <string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string>
</dict>

(参照:AppleのLaunchServicesKeysドキュメント

ここに画像の説明を入力してください

今、アプリ(私の場合はSourceTree)は指定されたパスを使用し、git 1.9.3で動作します:-)

PS:もちろん、特定のパスのニーズに合わせてパスエントリを調整する必要があります。


これは本当ですか?矛盾した情報を含む多くの投稿がありますが、その一部は明らかに古いものですが、一部は最近のようです。/etc/launchd.confとにかく(10.8.2では)持っていません。おそらく、ルールはアプリケーションその状態でない場合でも、必要があるパスのために彼らのInfo.plistファイルを使用して、彼らはまだ他のファイルを使用している可能性- /etc/launchd.conf/etc/paths/または/etc/paths.d/*、または`〜/ .MacOSX / environment.plistのを。実際には、Mountain LionのGUIアプリのパスをこれらのファイルのいずれかに設定できると言っても安全ですか?
オロム

2
このInfo.plistは、lauchd.confなど/ pathsなどをMavericsとEclipseで試した後、私のために働いた唯一のものでした。実はこれもすぐに機能しなかった、あなたは二つのことを覚えておく必要があります。1.実行/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/Eclipse.app別の答えに与えられたように、PLISTと2が追加変更した後、完全なパスをそこに、あなたはあなたのプロフィールのスクリプトのように、既存のパスを使用することはできません。
JaakL

これはSierra(10.12)で機能します。ただしlsregister、@ JaakLで示されているように、コマンドを実行する必要があります。
アラステアハリソン

1

Mountain Lion(10.8.4)では、$PATH何らかの形で特別に扱われます。Terminal.appまたはEmacs.appのインスタンスにlaunchctl setenv PATH /your/path:/here影響を与えません$PATH。その後、DockまたはFinderから起動されます(一方、launchctl setenv SPONG foo正常に動作します)。また、$HOME/.launchd.conf動作しません。/etc/launchd.confPATHをどこでも正しく設定するために私が見つけた唯一の方法です。残念ながら、そのようなenvarsを使用することはできません。その$HOMEため、私のラップトップ上のすべてのユーザーはを使用して/Users/nb/binいます$PATH。それは私だけなので、私は気にしません。


ターミナルプロセスはPATH設定した値を取得しますが、新しいターミナルを作成するとログインシェルが起動し、bashを使用している場合はexecutesが実行され/etc/profilePATHから返される値に初期化され/usr/libexec/path_helperます。あなたが選択した場合...シェル>新しいコマンドを、実行env(殻付きでない)、あなたはそれが見つける必要があるPATHあなたがのlaunchd経由で設定された値です。
クリスページ

-1

〜/ .profileまたは〜/ .bash_profileまたは〜/ .zprofile(zshの場合)にパスを設定してみてください。これはVimRで機能しました。ドックから起動したときはPATHを読み取りませんでしたが、ターミナルから起動したときは動作しました。ところで、OSX 10.11で実行していました。

私はあなたがそれがなぜ機能するのかについて素晴らしい説明をするのに十分なハンドルを持っていません、さまざまな設定ファイルとそれらが何をするかについてオンラインでたくさんの説明があります:https : //stackoverflow.com/questions/415403/ whats-the-difference-between-bashrc-bash-profile-and-environment

また、ここで同様の議論を参照してください:https : //stackoverflow.com/questions/3344704/path-variable-not-properly-set-in-gvim-macvim-when-it-is-opened-from-the-finder/ 24542893#24542893


質問は、あなたの答えは動作しませんと言っているFinderから打ち上げと同じであるドクから起動アプリのためにそれを行う方法を尋ねる-そしてそれがないなぜ我々は正確に説明することができます/動作しません
user151019

-3

Mac OS X 10.8.4、Mountain Lionでは、パス環境にこのファイルにリストされているパスが組み込まれています。

/etc/paths

このファイルvimは、次のコマンドを使用するなど、コマンドラインツールを使用して編集できます。

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