はじめに
ssh先でもローカルでもbash起動時にtmuxが起動した状態にしたい。
設定
bashrc
bashを起動した時点でdefault
というセッションでtmuxを起動したい。
すでにdefaultセッションが存在する場合にはアタッチする。
~/.bashrc
に下記を追加する
if [ -z ${TMUX} ]; then tmux new-session -A -s default fi
sshへの細工
上記の内容をローカルとssh先の両方に書いた場合、tmuxセッションがネストしてしまう。
これを避けるために下記のようなスクリプトを~/bin/ssh.sh
として作成する。
#!/bin/sh if [ -n "${TMUX}" ]; then tmux detach -E "ssh $*" else ssh "$@" fi
これをalias設定する。
alias ssh='ssh.sh'
これによりssh実行時にローカルのtmuxセッションがデタッチされる。
tmuxセッションの中から新規セッションを作成
Ctrl+b
してから:new -s <session-name>
する。
tmuxセッションを切り替える
Ctrl+b
してからs
を押す。
端末のキャプション
~/.config/tmux/tmux.conf
に下記を追加
# makes tmux send out the proper escape codes for setting the terminal title set-option -g set-titles on # sets the content of the title: user@host: /current/working/directory set-option -g set-titles-string "#(echo $USER)@#H: #{pane_current_path}"
参考
- Exit from outer tmux session on detect nested
- How to start tmux with attach if a session exists
- tmux sessions should be nested with care, unset $tmux to force
まとめ
若干使い勝手が悪い部分もあるワークアラウンドだが自分がやりたいことはできているので良しとする。