読者です 読者をやめる 読者になる 読者になる

OSXのPATHについて(path_helper)

PATHについて書き残し.

自分のzshrcでは数個PATHを追加してるんだけど,
そこに書いていないPATHはどこで追加されているのだろう...と思って調べた.
どうやら普通は,

/etc/zshenv

で追加されるらしい.

が,OSXの場合このファイルには

# system-wide environment settings for zsh(1)
if [ -x /usr/libexec/path_helper ]; then
	eval `/usr/libexec/path_helper -s`
fi

と書かれていた.

そして,このpath_helperは何をしているのか...
catしてみたらバイナリだった.

/Users/xxxxx% man /usr/libexec/path_helper
No manual entry for /usr/libexec/path_helper

マニュアル無し.

  • hも--helpも効かない.

実行すると,

PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/texbin:/usr/local/sbin:/Users/xxxxx/bin"; export PATH;

が標準出力に表示される.

  • sオプションつけても付けなくても変わらなかった..

この出力された文字列をevalでコマンドとして実行してPATH変数に設定するっぽい.

さらに調べてみると,
http://d.hatena.ne.jp/ikeas/20090925/1253899650
http://d.hatena.ne.jp/koseki2/20081201/macportPath
http://logrepo.blogspot.jp/2010/12/zsh.html
と,先人たちが色々書いていた.

Snow Leopard(10.6)からバイナリになったらしい.

結局,path_helperは

/etc/paths
/etc/paths.d/*

を読み込んでPATHを組み立ててるらしい.

それぞれのファイルを覗いてみると,

/Users/xxxxx% cat /etc/paths; cat /etc/paths.d/*
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/usr/X11/bin
/usr/texbin

おー.あったあった.なるほどね.
でも,各OSで.zshrc使いまわしたいからこういうところは一ファイルでやりたいなぁ.
どうしたら良いんでしょうか.