Як скинути заголовок вікна / вкладки iTerm2 при відключенні від віддаленого хоста? [дублікат]


0

У мене bash_profileна комп’ютері Mac та віддалених комп’ютерах, які я підключаю до налаштування, я автоматично розміщую ім'я хоста в області заголовка (або вкладки) вікна.

Баш-шкаралупа на моїй локальній машині

Місцевий обліковий запис Apple

Назва віддаленого хоста "Сократ"; також башмакова оболонка.

Віддалене вікно оболонки

Проблема полягає в тому, що коли я виходжу (і відключаюсь) від віддаленого хоста, заголовок вікна залишається з ім'ям хоста віддаленого пристрою. Таким чином, я фактично перебуваю на локальній оболонці Apple Bash із віддаленою назвою. Щоб виправити це, я виконую одну з таких дій:

  • закрийте вікно та відкрийте нове
  • відновити джерело .bash_profile( . ~/.bash_profile)
  • створити нову додаткову оболонку, видавши команду bash(зовсім небажано)

Як я можу це зробити автоматично, щоб після виходу з віддаленої оболонки заголовок повернувся до початкового імені хоста, щоб я знав, до якого хоста я насправді підключений?

Зауважте, що раніше задане питання Terminal відображає каталог попереднього місця розташування SSH, навіть коли SSH не працює, не вирішив належним чином цю проблему, оскільки рішення мало змінити, .bash_logoffякий працював лише для оболонок входу.


Не впевнений, що це не дублювання, відповідь на іншій посаді також пропонує рішення без використання .bash_logout. І відповідь, яку ви опублікували нижче, однаково справедлива і для іншого питання.
nohillside

Відповіді:


0

Вирішення цієї проблеми вирішується за допомогою термінальних кодів управління (Esc 22 і 23) та розміщення чотирьох простих ліній у .bashrcвіддаленому хості:

# ~/.bashrc
#
# Set the Terminal Title

echo -ne "\033[22;0t"                     #Save Title on Stack
echo -ne "\033]0;${HOSTNAME}\007"         #Set New Title

trap 'echo -ne "\033[23;0t"'  EXIT        #Reset Title Window

Як це працює

Використовуючи коди послідовності втечі терміналів 22 і 23 , ми можемо зберегти та отримати початковий заголовок. trapФункція ( man bash) буде виконувати команду при отриманні сигналу; у цьому випадку при виході.

Тепер, коли я виходжу (скасовую) віддалений хост, заголовок повертається до власного імені хоста.

Чому .bashrc?

Я хочу, щоб це було доступне для мене, чи я входив у хост із віддаленої машини (найчастіше), або коли я локальний для цього. .bash_profileзчитується для інтерактивної оболонки входу та .bashrcзачитується для інтерактивної оболонки, яка не входить у систему (локальної).

Щоб переконатися, що це однаково для обох умов, я включаю в своє .bash_profile:

# run a .bashrc file if it exists.

test -f ~/.bashrc && . ~/.bashrc

Чи не було б простіше робити те, що робить більшість людей, встановити заголовок вікна як частину підказки?
Марк Вілсон

@MarcWilson - а коли ви виходите з сесії?
Аллан

А потім попереднє швидке керування.
Марк Вілсон

Якщо ви не перезапустите сеанс, він не змінює заголовок. Ви перевірили?
Алан

Звичайно. Як інакше ви б очікували, що це спрацює? Bash оцінює PROMPT_COMMAND кожен раз, коли він відображає підказку. Це також дозволяє мати таку ж конфігурацію оболонки на пультах, як і на первинному хості. Для себе я використовую ksh93, який дозволяє замінити та виконувати псевдонімні розширення в $ PS1, але результати ті ж.
Марк Вілсон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.