LoginSignup
10
8

More than 5 years have passed since last update.

tmux で $PATH がダブらないようにする

Posted at

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 でペインを追加するときにもっさりしていたのですが、そのような現象がなくなったような気がします。

10
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8