Автозапуск Tmux при использовании SSH

При работе удалённо по ssh довольно удобно запускать tmux буквально в каждой сессии, чтоб в случае обрыва или преднамеренного закрытия можно было легко вернуться в то же окружение. Я уже молчу про базовые удобства tmux в виде виртуального оконного режима, сплита экрана и прочих фишек. А если у вас ещё macOS и iTerm с интеграцией tmux, то вообще красота. Но есть маленькая проблема — набирать в каждой сессии tmux -CC attach или tmux -CC new или tmux -CC new -A -s common это рутина.

Предлагаю автоматизировать этот процесс через функцию для командной оболочки.

Для Bash Shell добавляем в конфиг ~/.bashrc:

function ssht () {
  /usr/bin/ssh -t $@ "tmux -CC new -A -s common"
}

Для Fish Shell добавляем в конфиг ~/.config/fish/config.fish:

function ssht
  /usr/bin/ssh -t $argv "tmux -CC new -A -s common"
end

Из man tmux:

new-session[-AdDEP] [-cstart-directory] [-Fformat] [-nwindow-name] [-ssession-name] [-tgroup-name] [-xwidth] [-yheight] [shell-command]

(alias: new)

Create a new session with name session-name.

[…]

The -A flag makes new-session behave like attach-session if session-name already exists; in this case, -D behaves like -d to attach-session.

Теперь при использовании команды ssht вместо ssh автоматом будет происходить присоединение к tmux сессии, либо создаваться новая.

comments powered by Disqus