tmuxで既存セッションがあればnew-sessionせずにアタッチする


tmux関連ネタとしてよくみる奴だけど、発動条件に自分なりのこだわり条件をつけたものを使ってます。

やりたいこと

  • tmuxに引数がついている場合は何か別のことをしたいはずなのでそのまま通す
  • tmuxに引数が無くかつ既存セッションが存在する場合のみattach-sessionに差し替える
  • 不要な定義でメモリを消費したくない
    • 環境変数TMUXをチェックしてtmux外にいる場合のみ適用
    • 環境変数PS1をチェックしてインタラクティブシェルのときだけ適用

bashrcの記述

#tmuxで既存セッションがあればnew-sessionせずにアタッチする
if [[ -z $TMUX && -n $PS1 ]]; then
  function tmux() {
    if [[ $# == 0 ]] && tmux has-session 2>/dev/null; then
      command tmux attach-session
    else
      command tmux "$@"
    fi
  }
fi