理系学生日記

おまえはいつまで学生気分なのか

zshでPATHがおかしくなる問題の解決編

Mac の zsh で PATH がおかしくなる問題がありましたが、解決に至ったのでご報告させて頂きます。

問題

問題としては、

  1. zsh が起動した際に /etc/zprofile が読み込まれる
  2. /etc/zprofilepath_helper を実行する
  3. path_helper/etc/paths/etc/paths.d を読み込んで PATH 環境変数を設定する

ということで、勝手に(というか、これが通常のシェルの動作ではありますが) /etc/zprofile が読み込まれていたことが原因といえば原因です。

解決策

実は、3.1.6 あたりから no_global_rcs というオプションが追加されていて、これを設定すると /etc/z* のファイルが読み込まれなくなることになる。

New features in zsh version 3.1.6 (beta version)

(snip)

NO_GLOBAL_RCS can force /etc/z* files after /etc/zshenv to be skipped. (Please don't use this as an excuse to stuff more into /etc/zshenv!) http://zsh.sourceforge.net/releases.html

そういうわけなので、.zshenv あたりに

setopt no_global_rcs

とかを書いてもらえれば良いと思います。