tmux new-windowで環境変数が読み込まれない件

Posted by nysalor on November 25, 2012 · 1 min read

ここのところ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に

400: Invalid request

を書き、.zshrcや.zloginからrvmの設定を削除したところ、正常に起動するようになった。

また、これらのファイルのどれが読み込まれるか、またその順番についてはこちらの記事が参考になった。