
Я хотел бы знать, как мне установить заголовок оболочки на имя хоста, на котором мы сейчас находимся. Мой сценарий такой. Я вхожу на хост A, затем открываю экран и создаю несколько новых окон и подключаюсь по ssh к разным хостам в этих окнах. Поэтому я хотел бы, чтобы заголовок экрана внизу показывал текущий хост, на котором он находится.
решение1
Один из способов сделать это — использовать LocalCommand
функцию ssh
. При использовании этого метода после успешного подключения к удаленному хосту будет выведена управляющая последовательность для изменения заголовка терминала.
Отредактируйте или создайте ~/.ssh/config
что-то вроде:
Host *
PermitLocalCommand yes
LocalCommand printf '\033]0;%%s\007' '%h'
Недостатком этого метода является то, что заголовок остается измененным после выхода из удаленного сервера. Вы можете обойти это с помощью:
printf '\033]0;%s\007' "$(uname -n)"
Если вы хотите автоматизировать это, вы можете использовать функцию:
lssh () {
/path/to/ssh "$@"
printf '\033]0;%s\007' "$(uname -n)"
}
Этот ответ предполагает, что ваш эмулятор терминала используетте же последовательности выходакак XTerm. Если это не так, вам следует проверить документацию для вашего конкретного эмулятора терминала.
Одно предостережение в случае GNU screen заключается в том, что одно окно терминала может содержать несколько виртуальных окон. В этом случае вы можете использовать другую escape-последовательность ( \033k%s\033\\
), чтобы задать внутренний заголовок одного виртуального окна.