32
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-01-28

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

32
27
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?