SnowLeopardでのPATH管理についての覚書き

環境変数PATHの設定管理をする方法の覚書きです。

Macでは /usr/libexec/path_helper というスクリプトを使って、PATHが設定されます。
/etc/profileを見ると、下記の様な記述があります。
これが設定している部分です。

if [ -x /usr/libexec/path_helper ]; then
  eval `/usr/libexec/path_helper -s` 
fi


ただ、これだけでは何をやっているか分かりません。
実行してみましょう。

$ /usr/libexec/path_helper -s
PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/local/mysql/bin:/usr/X11/bin"; export PATH;

PATHの文字列が作られ、exportで設定されている事が分かります。
これらのPATHは、/etc/paths および /etc/paths.d/* から作られています。
またPATHの順序は、ファイルを読んだ順になっています。

/etc/paths -> /etc/paths.d/0* -> /etc/paths.d/1* -> .. -> /etc/paths.d/Z*


では、追加をしてみます。
MacPortsでインストールしたコマンドが置かれる /opt/local/bin を先頭に追加してみましょう。
条件は、PATHの一番最初に追加し、優先して /opt/local/bin 以下のコマンドを利用できるようにします。

一番最初に追加するには /etc/paths の先頭行に書きます。

$ sudo vim /etc/paths
/opt/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ /usr/libexec/path_helper -s
PATH="/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/local/mysql/bin:/usr/X11/bin"; export PATH;


実際に適用するには、端末を起動し直すか、/etc/profileを読み直してください。
適用されているかは、下記のコマンドで調べられます。

$ echo $PATH