3

Поэтому, когда я открываю новый терминал (я использую терминатор в Arch Linux), я настраиваю его либо на открытие нового сеанса tmux если он не существует, либо на присоединение к существующему. Когда я набираю exit в командной строке, он завершает сеанс tmux. Я должен напечатать exit снова, чтобы выйти из терминала. Что я хочу, так это то, что один раз введя команду exit вы выйдете из терминала, но оставите tmux запущенным, поэтому в следующий раз, когда я открою терминал, он будет присоединен к предыдущей сессии tmux По сути, это эквивалент нажатия кнопки выхода для оконного менеджера, но я хочу эту функциональность при вводе exit .

РЕДАКТИРОВАТЬ:

Это что-то вроде того, что я хочу:

alias exit='if [[ $TMUX = "" ]]; then exit; else tmux detach; exit; fi'

но проблема заключается в exit после того, как tmux detach должно быть вызвано в терминале, содержащем сеанс tmux, а не в самом сеансе tmux.

2 ответа2

2

Мы должны объявить две функции: одну для запуска tmux, а другую для выхода из tmux:

function ttmux {
if     (pgrep tmux); then
       tmux attach
  else tmux
  fi
builtin exit
}

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

function exit {
if      [ ${TMUX} ]; then
          tmux detach
      else builtin exit
     fi
}

Если вы внутри tmux отсоедините его, если не выполните встроенный выход

Поместите их в свой .bashrc или .zshrc и измените имя функции, если хотите, и вызовите их.

>> ttmux # to start tmux
>> exit # to detach tmux
0
terminator -e tmux

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .