I’m hungry

おもにAmazonでの衝動買いや技術的な話をぼちぼちと。

Yosemiteでlaunchd.confが使えなくなったのをなんとかする(アプリケーションに環境変数を渡す方法)

2015-02-01 14:29:01 | ネットサービス/テクノロジ
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で十分)。


Comment    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 存在しないファイルでerror: ... | TOP | 両神山登山に行ってきました »
最新の画像もっと見る

post a comment

ブログ作成者から承認されるまでコメントは反映されません。

Recent Entries | ネットサービス/テクノロジ