Иногда я непреднамеренно выхожу из сеанса терминала (обычно потому, что мне кажется, что я подключен к удаленной системе, а я нет), поэтому я подхожу к следующему:
Как я могу перезапустить сеанс в этот момент? Я не хочу закрывать окно или вкладку, потому что у меня есть куча вкладок, настроенных для моего обычного рабочего процесса, поэтому я просто хочу, чтобы сеанс в текущей вкладке продолжался (то есть возвращался к приглашению bash).
Единственное решение, которое я нашел до сих пор, - это полностью закрыть Терминал и снова открыть его, но это далеко от идеала, поскольку оно явно прерывает все остальное, что я делаю в других окнах / вкладках Терминала.
^t 8
например) для данного контекста, вместо того, чтобы визуально подсчитывать, какую вкладку нажимать или (или сколько нажатий ctrl-pgup) ,cd
Когда я работаю над кодом, у меня обычно около трех оболочек, добавляемых к исходному коду, что соответствует вашему использованию.ssh
то. Я просто привык к использованию экрана и использую его как локально, так и на удаленных сессиях. Насколько я понимаю, если у вас еще нетscreen
мышечной памяти, изучите tmux, потому что экран старый и грубый. Я мог бы, вероятно, переключиться на негоtmux
и настроить его так, чтобы он использовал все те же клавишные привязки, что и для меняscreen
, но у меня по-прежнему нормально работает экран.Ответы:
На данный момент нет способа вернуть вкладку. Сеанс терминала закрыт, и у него больше нет TTY. Там просто нет возможности ссылаться на вкладку, чтобы сделать что-нибудь умное. Я бы предложил добавить эту функцию в ваш .bashrc или .profile, чтобы у вас не было проблемы в будущем:
или для тех из нас, кто использует Z Shell (добавьте его в свой .zshrc):
Это хороший маленький барьер между вами и этой надоедливой командой выхода! Господь знает, что я делал одно и то же много раз в прошлом.
источник
-t 5
опция), команда чтения потерпит неудачу, что вызовет команду выхода после нее.exit
если вы используете Bash. Вы можете вставить свой сценарий~/.bash_logout
..bash_logout
?logout
указать псевдоним и установитьIGNOREEOF
значение больше 1 (или перепривязать ^ D).Сценарий Уильяма Т. Фроггарда не сделал то, что мне было нужно, потому что в общем случае я попадаю в эту ситуацию с помощью ^ D ( ctrl+ D), и переопределение
exit
ничего не сделало для этой ситуации. Для меня предложение Денниса Уильямсона об урегулированииIGNOREEOF
было достаточно. Я только добавил:в мой
~/.bashrc
файл и теперь (если я в оболочке верхнего уровня и выйду из терминала) первый ^ D генерирует ответ:Если я сразу же наберу ^ D снова, оболочка завершится, поэтому выйти, когда я захочу, все еще легко, но теперь один ^ D выдаст мне предупреждение. (Если вы хотите, вы можете установить
IGNOREEOF
большее число, чтобы требовать дополнительных последовательных ^ D.)Также полезно, если я в подпакете, первый ^ D генерирует ответ:
Опять же, дополнительный ^ D вытащит меня, и теперь я могу определить разницу между выходом из под-оболочки и выходом из оболочки верхнего уровня.
источник