yosemiteからセキュリティ保護の観点とかなんとかで従来使えていた/etc/launchd.confが完全に無視されるようになり、Eclipse.appとかに共通の環境変数を渡すことができなくなりました。
色々ググってみたけど、どうにも設定ではDaemon/Agentではないアプリケーションに環境変数を渡す方法が見つからず。
大変イケてない気もするけど、起動をバイナリ直接からシェルスクリプト経由に変更することで対応しました。ひとまず動いてます。
■[1] 起動スクリプトの作成
Eclipse.app内部にあるeclipseバイナリと同じ場所にシェルスクリプトを作成します。
$ pwd
/Applications/Eclipse.app/Contents/MacOS
$
※eclipseのインストール場所はそれぞれの環境によって異なるので適宜読み替えてください
Eclipse.app/Contents/MacOSディレクトリ配下にeclipseの実行バイナリがあるので、同じディレクトリにeclipse.shを作成(名前はなんでも良い)。
#!/bin/sh
export PATH=/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
logger "`dirname \"$0\"`/eclipse"
exec "`dirname \"$0\"`/eclipse" $@
作成したら実行権限を付けておく
$ chmod +x ./eclipse.sh
$
■[2] Info.plistを編集して実行対象を変更
Eclipse.app/ContentsにあるInfo.plistを編集(中身はXMLファイル)して、eclipse起動時の実行対象(CFBundleExecutable)をeclipseからeclipse.shに変更する。
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>eclipse.sh</string>
<key>CFBundleGetInfoString</key>
<string>Eclipse 4.4 for Mac OS X, Copyright IBM Corp. and others 2002, 2011. All rights reserved.</string>
(略)
■[3] LaunchService databaseをアップデート
そのままだと修正が反映されないので、LaunchService databaseを以下のコマンドで更新する。
$ /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/Eclipse.app
lsregister: processing /Applications/Eclipse.app
$
これで完了。あとは普通にeclipseのアイコンをつつくとeclipse.sh経由で起動し、設定した環境変数が使用されるようになります。
他にもっといい方法があれば教えてください。
#Yosemiteは他にもいきなり使えなくなったコマンド(ipfwとか)があったりして正直アップグレードしなきゃよかったと思ってます(Mavericksで十分)。
色々ググってみたけど、どうにも設定ではDaemon/Agentではないアプリケーションに環境変数を渡す方法が見つからず。
大変イケてない気もするけど、起動をバイナリ直接からシェルスクリプト経由に変更することで対応しました。ひとまず動いてます。
■[1] 起動スクリプトの作成
Eclipse.app内部にあるeclipseバイナリと同じ場所にシェルスクリプトを作成します。
$ pwd
/Applications/Eclipse.app/Contents/MacOS
$
※eclipseのインストール場所はそれぞれの環境によって異なるので適宜読み替えてください
Eclipse.app/Contents/MacOSディレクトリ配下にeclipseの実行バイナリがあるので、同じディレクトリにeclipse.shを作成(名前はなんでも良い)。
#!/bin/sh
export PATH=/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
logger "`dirname \"$0\"`/eclipse"
exec "`dirname \"$0\"`/eclipse" $@
作成したら実行権限を付けておく
$ chmod +x ./eclipse.sh
$
■[2] Info.plistを編集して実行対象を変更
Eclipse.app/ContentsにあるInfo.plistを編集(中身はXMLファイル)して、eclipse起動時の実行対象(CFBundleExecutable)をeclipseからeclipse.shに変更する。
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>eclipse.sh</string>
<key>CFBundleGetInfoString</key>
<string>Eclipse 4.4 for Mac OS X, Copyright IBM Corp. and others 2002, 2011. All rights reserved.</string>
(略)
■[3] LaunchService databaseをアップデート
そのままだと修正が反映されないので、LaunchService databaseを以下のコマンドで更新する。
$ /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/Eclipse.app
lsregister: processing /Applications/Eclipse.app
$
これで完了。あとは普通にeclipseのアイコンをつつくとeclipse.sh経由で起動し、設定した環境変数が使用されるようになります。
他にもっといい方法があれば教えてください。
#Yosemiteは他にもいきなり使えなくなったコマンド(ipfwとか)があったりして正直アップグレードしなきゃよかったと思ってます(Mavericksで十分)。