Help us understand the problem. What is going on with this article?

Mac OSX El Capitan での ~/.zshenv の扱いについて

More than 3 years have passed since last update.

El Capitanにアップグレードしてから,zshのPATHの様子がおかしい

調べてみると,/etc/zprofile が作られていて,その中身は

/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などを設定していても書き変えられてしまう。

解決法

  1. ~/.zshenvではなく~/.zshrcでPATHの設定をする。
    これをするとせっかく.zshenvと.zshrcを使いわけてる意味がなくなる。

  2. /etc/zshprofileの中身をコメントアウトする。
    あんまりシステムデフォルトを変えたくはないが,こちらで対処。

追記

  • 解決法2.の場合,/etc/paths,/etc/paths.d/内に置いてあるPATH設定が読み込まれなくなるので,自分で読み込むようにした方がよいのかも。 というわけで export PATH する直前に
~/.zshenv
eval `/usr/libexec/path_helper -s`

を付け加えることにしました。
つまりpath_helperと~/.zshenvのPATH設定の順序を逆にしたことになります。
もっとスマートな解決法を知ってたら誰か教えてください。

  • 下のyudai-nktさんのコメントにある方法が一番すっきりして良さそうです。つまり, /etc/zprofileは書き変えず,
~/.zshenv
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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away