tmux new-windowで環境変数が読み込まれない件
ここのところqiitaの方ばっかり書いていて放置していたけど、たまにはこちらへ。
.tmux.confにnew-window -n pry pryと書いて自動的にpryのウィンドウを開いてたが、brew upgradeとかやってるうちに正常に起動しなくなった。 エラーメッセージが一瞬で消えてしまうので分かりにくいが、tmux new-window "pry;read v"とやればじっくり見ることができる。 それによるとどうやらrvmで入れたpryがインタプリタとして/usr/bin/rubyを起動しようとしてSEGVしているらしい。 Twitterで呟いて悩んでいたらサジェストを貰った。
@nysalor tmux showenv -g PATH で tmux が持っている PATH 環境変数を調べられます。
— 坂口和彦 (@pi8027) November 24, 2012
@nysalor では tmux neww 'echo $PATH ; read v' だとどうですか
— 坂口和彦 (@pi8027) November 24, 2012
おお?PATHの先頭に/usr/binが入っているので、rvmのrubyではなくシステムのrubyが呼び出されているようだ。
tmux内のプロンプトでecho $PATHすると正常なんだけど、これは
@nysalor なるほど。因みに tmux neww のときに呼ばれてる zsh は .zshrc を読んでいないはずなので、それが原因だと思います。パスの設定は .zshenv に書くと上手くいくと思います。
— 坂口和彦 (@pi8027) November 24, 2012
ということらしい。なるほど! pryが起動していたのは[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"が.zloginに入っていたため・・・なのかな? とりあえず.zshenvに
を書き、.zshrcや.zloginからrvmの設定を削除したところ、正常に起動するようになった。
また、これらのファイルのどれが読み込まれるか、またその順番についてはこちらの記事が参考になった。