OS X Yosemite 環境における Java エンコード設定の良い方法
OS X 環境における Java のエンコード設定については、
こちらの記事が参考になりました。
- [前編] Javaのシステムプロパティの設定と文字エンコーディングについて改めて見直してみた - PiyoPiyoDucky
- [後編] OS XにおけるJavaアプリケーションのエンコーディング - PiyoPiyoDucky
この記事中に、/etc/launchd.conf を使った launchctl の永続化が紹介されていますが、
OS X Yosemite 10.10 では、/etc/launchd.conf が使えなくなっています。
私の環境は、下記のとおりです。
そもそも環境変数を設定する良い方法は?
広く知られている方法としては、
.bash_profile, .bashrc に export で記述することです。
# 例 export PATH=$PATH:/usr/local/mysql/bin/
この手法はシェルログインの場合は有効ですが、GUI ツールからは環境変数を拾うことが出来ません。
では OS X 環境では、どうすると一番良いのでしょうか?
これは stackoverflow で議論されています。
Setting environment variables in OS X?
OS X の launchctl setenv を使うのが良い方法です。
例えば環境変数 LANG に "ja_JP.UTF-8" を定義したいとします。
その場合、
$ launchctl setenv LANG ja_JP.UTF-8
を実行した後で、PC をリブートすると環境変数 LANG が有効になります。
$ echo $LANG > ja_JP.UTF-8
launchctl の設定を永続化するには、
OS X Yosemite 以降は plist を使います。
詳細はこちらを御覧ください。
http://www.dowdandassociates.com/blog/content/howto-set-an-environment-variable-in-mac-os-x-launchd-plist/
例えば先ほどの LANG を永続化する場合、下記のような設定ファイルを作成・配置します。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>setenv.FOO</string> <key>ProgramArguments</key> <array> <string>/bin/launchctl</string> <string>setenv</string> <string>LANG</string> <string>ja_JP.UTF-8</string> </array> <key>RunAtLoad</key> <true/> <key>ServiceIPC</key> <false/> </dict> </plist>
このファイルを
- /Library/LaunchDaemons/setenv.LANG.plist
- /Library/LaunchAgents/setenv.LANG.plist
のいずれかに配置します。
LaunchDaemons に配置した場合、OS 起動時に実行されますが、GUI 環境には適用されません。
LaunchAgents に配置した場合、ユーザーごとに起動され、GUI 環境にも適用されます。
あとは、これを launchctl に登録します。
$ sudo launchctl load /Library/LaunchAgents/setenv.LANG.plist
PC を再起動すると有効になります。