Назва сеансу зберігається в змінній tmux#S , для доступу до нього в терміналі ви можете це зробити
tmux display-message -p "#S"
Якщо ви хочете використовувати його в .tmux.conf, це просто #S. Зауважте, що -pопція буде надрукувати повідомлення у stdout, інакше повідомлення відображатиметься у рядку статусу tmux .
Якщо вищевказана команда викликається всередині сеансу, вона повертає назву сеансу. Якщо він викликається поза будь-якого сеансу, він все одно поверне ім'я останнього ще запущеного сеансу. Я не зміг знайти команду tmux, щоб перевірити, чи є вона всередині сеансу чи ні, тому мені довелося придумати цю роботу:
tmux list-sessions | sed -n '/(attached)/s/:.*//p'
tmux list-sessionsпоказує всі сеанси, якщо один додається, він відображається (attached)в кінці. За допомогою sed ми пригнічуємо весь вихід (варіант -n), за винятком того, де ми знаходимо ключове слово (attached), у цьому рядку ми вирізаємо кожне натискання після a :, що залишає нам назву сеансу. Це працює для мене всередині та поза сеансом, на відміну від tmux display-message -p "#S".
Звичайно, це працює лише в тому випадку, якщо в назві сеансу немає :і немає (attached).
Як коментує Кріс Джонсен , спосіб перевірити, чи є хтось у сесії tmux, це перевірити, чи встановлена його змінна середовище:
[[ -n "${TMUX+set}" ]] && tmux display-message -p "#S"
tmuxсеанс, а в іншій я позаtmuxсеансом. Коли я ввожу в обох командуtmux display-message -p "#S", друкується один і той же результат, а значення, що повертається для обох команд, однакове.