Intereting Posts
Что такое точное значение smtp_receive_timeout в exim.conf? Как установить Slax на USB-накопитель? Двойная загрузка Linux и hiberantion: обмен разделом обмена Переименуйте файлы со случайными символами из sha1sum. Будут ли имена уникальными? Есть ли способ определить, какая версия ядра была скомпилирована модулем ядра? Как отладить сбой семпла? Как получить полное разрешение экрана с помощью Debian? Какие пакеты установлены по умолчанию в Debian? Есть ли термин для этого набора? Почему некоторые из этих пакетов «автоматически установлены», а некоторые нет? Воспроизведение локальных контекстов selinux после переустановки ОС Простой способ вставки строк из одного файла в другой Самый чистый способ использования смартфона как обычной рабочей станции Linux Являются ли «расширение имени файла» и «расширение имени пути» тем же самым в Bash? Как подождать по программе, запущенной в другой оболочке Заключить несколько строк в цитате Vim В чем разница между @ и * при ссылке на значения массива bash?

Запуск существующего сеанса tmux при входе в SSH или создание, если не существует

Я хочу открыть сеанс tmux каждый раз, когда я вхожу через SSH на свой сервер. Если сеанс существует, подключитесь к нему, если нет, создайте и подключитесь к нему.

Я думаю, мне нужно редактировать файл ~/.bashrc , но я не собираюсь делать оператор if / else или что-то в сценариях bash.

Как я могу это сделать?

tmux сам по себе запускает новый сеанс, tmux attach присоединяется к предыдущему сеансу.

tmux attach будет работать, если предыдущей сессии не было.

Эти два факта объединяются, чтобы дать следующее решение:

 tmux attach || tmux 

Сначала он пытается tmux attach , и если он не работает, он запускает tmux сам по себе. Это относится к предыдущей сессии, если она есть, и запускает новый сеанс, если этого не происходит. Итак, это первая часть.

Для второй части вы хотите, чтобы этот код запускался каждый раз при входе в систему через SSH. Поэтому вам нужно проверить:

  1. является ли это оболочкой входа. Это можно сделать, используя shopt -q login_shell .
  2. подключены ли вы через SSH. Это можно сделать, если установить $SSH_CLIENT , то есть: [ -n "$SSH_CLIENT" ] .

Поэтому вы должны добавить это в конец своего .bashrc :

 if shopt -q login_shell && [ -n "$SSH_CLIENT" ]; then tmux attach || tmux fi