Как выйти из терминала автоматически после выхода из tmux

Я не уверен, задавались ли подобные вопросы, но я не нашел в SO.

Я использую gnome-терминал + tmux. Я добавил if [ "$TMUX" = "" ]; then tmux; fi в свой .zshrc, поэтому, когда я запускаю терминал, я автоматически вхожу в tmux. Каждый раз, когда я нажимаю Ctrl-D и выхожу из tmux, мне приходится снова нажимать Ctrl-D, чтобы выйти из терминала.

Теперь, что я могу вставить в свои .zshrc или tmux.conf, чтобы выйти из моего tmux и терминала одним нажатием.

Я подумал, что могу добавить прослушиватель для захвата события выхода tmux. И если это событие произойдет, позвольте мне выйти из окна. Но я понятия не имею, как этого добиться. Любая помощь будет оценена!


person WW00WW    schedule 19.08.2018    source источник
comment
@CharlesDuffy Извините, я забыл указать, как я запускаю tmux, сейчас я отредактирую свой вопрос.   -  person WW00WW    schedule 20.08.2018
comment
Кстати, на будущее, вопросы об использовании интерактивной оболочки (в отличие от сценариев) часто лучше подходят для Unix & Linux или SuperUser.   -  person Charles Duffy    schedule 20.08.2018
comment
@CharlesDuffy Хорошо, спасибо за напоминание.   -  person WW00WW    schedule 20.08.2018


Ответы (1)


Если вы начнете tmux с exec, например:

exec tmux

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


Таким образом, в ваших точечных файлах:

if [ -t 0 ] && [[ -z $TMUX ]] && [[ $- = *i* ]]; then exec tmux; fi

[ -t 0 ] — это функция безопасности: она позволяет избежать продвижения вперед, если ваш стандартный ввод не является TTY. Точно так же проверка $- позволяет избежать запуска в неинтерактивных оболочках.


Между прочим, я обычно советую делать это частью конфигурации терминала, а не частью конфигурации оболочки, чтобы избежать непреднамеренного воздействия на другие типы оболочек (например, запущен через sshd, в частности, с помощью автоматизированного инструмента, а не пользователя-человека). Сценарии не должны имитировать TTY или заявлять оболочке, что они интерактивны, хотя на самом деле это не так, но на практике такое случается, и такая практика может привести к неожиданностям.

person Charles Duffy    schedule 19.08.2018
comment
Но я использую gnome-терминал Ubuntu18, я не нашел файл конфигурации терминала. Я использую zsh в качестве оболочки по умолчанию, поэтому я поместил его в свой .zshrc. - person WW00WW; 20.08.2018
comment
Прошло некоторое время с тех пор, как я использовал GNOME, но я помню, что его можно было настроить, щелкнув меню графического интерфейса. - person Charles Duffy; 20.08.2018
comment
... per unix.stackexchange.com/questions/81165/ должна быть возможность использовать пользовательскую команду вместо вызова оболочки по умолчанию в редакторе профиля gnome-terminal. - person Charles Duffy; 20.08.2018