El Capitanにアップグレードしてから,zshのPATHの様子がおかしい
調べてみると,/etc/zprofile が作られていて,その中身は
# system-wide environment settings for zsh(1)
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
のようにpath_helperを実行させるものだった。
このpath_helperは
「/etc/pathsおよび/etc/paths.d/*からPATHを作り出し、元からあったPATHから重複を除いたものを後ろにつける」
という余計なことをしてくれるものらしく,/etc/zprofileは,~/.zshenvより後に読み込まれるため,せっかくせっせと~/.zshenvにPATHなどを設定していても書き変えられてしまう。
解決法
-
~/.zshenvではなく~/.zshrcでPATHの設定をする。
これをするとせっかく.zshenvと.zshrcを使いわけてる意味がなくなる。 -
/etc/zshprofileの中身をコメントアウトする。
あんまりシステムデフォルトを変えたくはないが,こちらで対処。
追記
- 解決法2.の場合,/etc/paths,/etc/paths.d/内に置いてあるPATH設定が読み込まれなくなるので,自分で読み込むようにした方がよいのかも。
というわけで export PATH する直前に
eval `/usr/libexec/path_helper -s`
を付け加えることにしました。
つまりpath_helperと~/.zshenvのPATH設定の順序を逆にしたことになります。
もっとスマートな解決法を知ってたら誰か教えてください。
- 下のyudai-nktさんのコメントにある方法が一番すっきりして良さそうです。つまり,
/etc/zprofileは書き変えず,
setopt no_global_rcs
をつけ加える。
参考
OSXでのzshにおけるPATH設定
http://hayajo.tumblr.com/post/12281915216/osx%E3%81%A7%E3%81%AEzsh%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8Bpath%E8%A8%AD%E5%AE%9A
Fixing your zsh path after upgrading to El Capitan.
http://richa.avasthi.name/blog/2015/10/fixing-your-zsh-path-after-upgrading-to-el-capitan/
path_helperについて。Mac OSX 版
http://takuya-1st.hatenablog.jp/entry/2013/12/14/040814