2010-07-02

~/.MacOSX/environment.plist

環境変数の設定に関して。

環境変数を参照するプログラムはたいていターミナルから使う(シェルの中で起動する)。シェルの設定がそれなりにしてあれば問題にはならない。一方、Carbon Emacs は Finder から起動することになるので、シェルの設定の影響を受けない。つまり、Carbon Emacs が参照する環境変数は別の方法で設定しなければならない。

ほとんどの場合 Carbon Emacs のデフォルトで問題ないが、困ることもある。具体的には INFOPATH。ユーザの方でこれを設定をしないと、Carbon Emacs 自身で設定してしまう(*scratch* バッファで (getenv "INFOPATH") を評価するとわかる)。.emacs では上書きできないっぽい(環境変数が優先される)。そうなると、MacPorts なんかでインストールしたプログラムの Info が(Carbon Eamcsから)読めない。ま、近頃では Emacs の中から Info を読むこと自体、まれなんだがね。

ユーザのセッションごとの環境変数を設定する方法が、今回の表題に挙げた ~/.MacOSX/environment.plist に記述するというものだ。拡張子が主張するように Property List Editor で作るファイルだ。もっとも、実体は XML ファイルなのでテキストエディタで書くこともできる。以下がサンプル(長い行はバックスラッシュで折り返してある)。INFOPATH という環境変数を設定している。

(environment.plist)
1: <?xml version="1.0" encoding="UTF-8"?> 2: <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" \ "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 3: <plist version="1.0"> 4: <dict> 5: <key>INFOPATH</key> 6: <string>/usr/local/info:/opt/local/share/info:\ /Applications/Emacs.app/Contents/Resources/extra/info:\ /Applications/Emacs.app/Contents/Resources/info:\ /usr/share/info</string> 7: </dict> 8: </plist>

記述に関して注意しなければならないことがある。このファイルはシェルが読むわけではないので、シェル特有の表記法は使えないってこと。たとえば、"~"だとか、シェル変数、環境変数の展開など。つまり、~/info、あるいは ${HOME}/info のようには書けない。ちょっと不便。

ちなみに、この Property List Editor は開発ツールに付属のものだ。開発ツールがインストールされていないと使えないアプリってこと。「それで良いのか、Apple!」と思わないでもないが、こんなことをするのは、unix 由来のプログラムを使うとき、それもターミナル(シェル)と無関係に使うときだけで、そういうユーザはもれなく開発ツールをインストールしているだろうから問題にはならないか。

関連リンク

0 件のコメント:

コメントを投稿