В bash для отображения названия текущей программы в строке жесткого экрана GNU Screen требуется всего две строки конфигурации. Сначала скажите экрану, как обычно выглядит конец вашей подсказки, и укажите заголовок по умолчанию для окна, когда вы сидите в оболочке:
shelltitle "$ |bash"
Затем поместите эту escape-последовательность в переменную PS1 перед символами, которые обычно заканчивают приглашение '$ '
в этом случае: \033k\033\\
Эта техника работает, в точку. Заголовок окна hardstatus обновляется до имени запущенной в данный момент программы, а затем переключается обратно на заголовок по умолчанию вскоре после завершения выполнения. Однако одной из основных проблем является то, что эта escape-строка сама по себе не экранирована, что вызывает проблемы переноса строк с командами длиннее начальной строки.
Это было раздражающим, поэтому я отправился на поиски решения. Оказывается, простое экранирование предыдущей escape-последовательности исправляет перенос строки: \[\033k\]\[\033\\\]
Большой! Заголовок моего окна со статусом hardstatus по-прежнему обновляется до имени запущенной в данный момент программы, и теперь мои более длинные команды правильно переносятся на вторую строку. Однако, с этой новой escape-последовательностью в моем PS1, экран обновляет заголовок окна с помощью фактической команды, которую я печатаю, а не просто имя текущей программы после ее выполнения.
Мне интересно, кто-нибудь получил это работает правильно - то есть перенос строки и правильное обновление заголовка окна hardstatus?