OS X Mavericks で GUI アプリの環境変数を設定するにはどうすればよいですか?

OS X Mavericks で GUI アプリの環境変数を設定するにはどうすればよいですか?

OS X Mavericks でアプリを実行するのに苦労していました。.app バンドルにドリルダウンしてシェル スクリプトを直接実行することで、ようやく実行できるようになりました。JAVA_HOME を設定する必要があったようです。そこで、シェルの .profile で設定したところ、すべて正常に動作しました。

しかし、ドックのアイコンをクリックしただけでは実行されません。これは、JAVA_HOME がグローバルに設定されていないためだと思います。シェルから直接アプリを実行していないため、OS X は JAVA_HOME が何であるかを知りません。ただ探し続けるだけです。

以前のバージョンの OS X では、環境変数を /etc/launchd.conf に追加するだけで GUI アプリケーションに設定できたようです。このファイルは Mavericks には存在しないようです。Mavericks で GUI アプリケーションに機能するグローバル環境変数を設定するにはどうすればよいでしょうか?

答え1

/etc/launchd.confデフォルトでは存在しませんでしたが、10.9 でも動作します。

  1. たとえば実行しますsudo nano /etc/launchd.conf
  2. のような行を追加します。(ただし、実際に何を設定すればよいsetenv JAVA_HOME /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Homeかはわかりません。)JAVA_HOME
  3. プロセスを再起動するか、実行しlaunchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.confて再起動します。

launchctl exportユーザーの launchd プロセスによってエクスポートされた変数を出力し、sudo launchctl exportルートの launchd プロセスによってエクスポートされた変数を出力します。

このメソッドは、デフォルトのパスを設定するためにも使用できます。たとえば、次の行を追加しました/etc/launchd.conf:

setenv PATH /Users/lauri/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin

( はroot として実行されるプログラム用なので、の/Users/lauri/bin代わりにを使用しました。)~/bin~/bin/var/root/bin

答え2

Launchd.conf は Mac OS 10.10 以降では動作せず、使用できなくなりました。

これを実現する正しい方法は、起動時に読み込まれる LaunchAgent スクリプトを使用することです。これらのスクリプトは恐ろしく面倒なので (個人的な意見ですが)、.bash_profile を使用してこれらのスクリプトを自動的に作成/更新することを好みます。

.bash_profile からこれを実現する簡単な方法については、この SO の回答を試してみてください。これで、新しい Mac M2 で (再び) 解決しようとして費やした数時間を節約できると思います。

https://stackoverflow.com/questions/25385934/setting-environment-variables-via-launchd-conf-no-longer-works-in-os-x-yosemite

関連情報