Почти все решения ( 1 , 2 ) для установки tmux при запуске оболочки зависят от некоторых переменных среды, таких как $TMUX
, $TERM
и т. Д. Но когда мы запускаем Оболочка для входа, например, su -
, все переменные очищены, кроме $TERM
. Таким образом, мы можем положиться на $TERM
, чтобы избежать запуска вложенных сессий. Допустим, по умолчанию $TERM
равен xterm
, и мы установили screen
в .tmux.conf
, чтобы определить, что мы находимся в сеансе TMUX. Это прекрасно работает для локального входа.
Теперь две машины A и B используют одно и то же правило для управления вложенными сеансами, и мы находимся в сеансе tmux на машине A. Когда мы выполняем удаленный вход (через ssh
) из A в B, сеанс tmux не запускается B, потому что $TERM
уже установлен на screen
.
Итак, нет ли способа узнать, что мы уже находимся в сеансе tmux, не завися от переменных окружения?
PS:
Я публикую обходной путь как ответ, который я использую для достижения вышеупомянутого поведения. Но более точный и лучший метод, такой как этот, может работать с использованием команд tmux.