tmux を起動するとシェルの環境変数がダブっていることに気がつきました。シェルにログインしたときと tmux を起動したときで二重に環境変数が定義されているようでした。
シェルにログイン後
⚡ LF=$'\\\x0A' && echo $PATH | sed 's/:/'"$LF"'/g' | sort
/Users/morygonzalez/.nodebrew/current/bin
/Users/morygonzalez/.rbenv/bin
/Users/morygonzalez/.rbenv/shims
/Users/morygonzalez/GOPATH/bin
/bin
/sbin
/usr/bin
/usr/local/bin
/usr/local/sbin
/usr/sbin
tmux 起動後
⚡ LF=$'\\\x0A' && echo $PATH | sed 's/:/'"$LF"'/g' | sort
/Users/morygonzalez/.nodebrew/current/bin
/Users/morygonzalez/.nodebrew/current/bin
/Users/morygonzalez/.nodebrew/current/bin
/Users/morygonzalez/.rbenv/bin
/Users/morygonzalez/.rbenv/bin
/Users/morygonzalez/.rbenv/bin
/Users/morygonzalez/.rbenv/shims
/Users/morygonzalez/.rbenv/shims
/Users/morygonzalez/.rbenv/shims
/Users/morygonzalez/GOPATH/bin
/Users/morygonzalez/GOPATH/bin
/Users/morygonzalez/GOPATH/bin
/bin
/sbin
/usr/bin
/usr/local/bin
/usr/local/bin
/usr/local/bin
/usr/local/sbin
/usr/local/sbin
/usr/local/sbin
/usr/sbin
.zshenv に記載している $PATH
の設定情報が三回も読まれています。
対処方法は二つあって、一つは .zshrc や .zshenv に書かれている $PATH
の設定を .zprofile に移すというもの。 .zshrc や .zshenv はシェルにログインしたときと tmux を起動したときのどちらのタイミングでも評価されてしまいますが、 .zprofile の評価はログインしたときだけのようでした。
もう一つは $PATH
の設定を行っている部分で以下のように条件分岐をする。
if [[ -z $TMUX ]]; then
# Homebrew
PATH=/usr/local/bin:/usr/local/sbin:$PATH
fi
tmux が起動しているかどうかを $TMUX
でチェックし、存在していなければ $PATH
の設定を行います。
変更点が少なそうなので僕は今回後者を採用しました。
ときどき tmux でペインを追加するときにもっさりしていたのですが、そのような現象がなくなったような気がします。