memo

2010-12-17

zsh で ${PATH} が初期化されて困る

zsh は非インタラクティブな形で呼んでも /etc/zsh/zshenv を毎回読むらしく、 その中に . /etc/profile.env とか書いてあるおかげで ${PATH} が初期化されてしまう。

で、非インタラクティブだと ${HOME}/.zshrc なんかは読まれないので、 PATH="${PATH}:${HOME}/bin みたいな設定が反映されず、 その下に置いてあるスクリプトが実行できない。

${SHELL} -c "execute some command" みたいなことをしてるヤツ(vim の :! とか)や #!/bin/zsh なスクリプトやらがこのせいでうまく動かないんだけど、どうしたもんかね。

${SHLVL} あたり見て動き変えるように書き換えちゃえばいいのか? と思ったけど、今度は PATH が二重に設定されたりとかで、何か結構面倒くさそうな気配がしてきた。

後で、 zsh な設定ファイル類の読み込まれる順番とか考慮してちゃんと考えよう。


パッケージのミスだったっぽく、 app-shells/zsh-4.3.11-r2::arbor に上げたら期待通りの動きになってくれた。