みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

sshとtmuxを組み合わせる

はじめに

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}"

参考

まとめ

若干使い勝手が悪い部分もあるワークアラウンドだが自分がやりたいことはできているので良しとする。