Вікно GNU Screen перейменувати неприємності


13

Мені подобається спливаюче екранне сеанс із заздалегідь відкритими SSH-підключеннями до основних серверів, які я адмініструю в офісі. Я даю цим вікнам кожне дуже коротке ім’я, як правило, 2-4 символи, тому вони відображаються в моєму рядку стану екрана з цими іменами. Тож у мене буде запис на екрані, який виглядає так

0$ jen1 ...

Тепер, коли мені потрібно перейти на цей сервер і зробити що-небудь навіть таке просто, як отримати список лістингу, це ім'я раптом розширюється і стає

0$ ghellings@devjenkins01

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

 (0*$ ghellings@devjenkins01:/opt/somepackage/software/subdirectory)

Я хочу, щоб він змінив лише активний стан, щоб він завжди читався

`0$ jen1` or `(0*$ jen1)`

Чи є спосіб для мене заблокувати ім'я вікна та запобігти його зміні?

Відповіді:


8

Я виявив це рано на тестуванні RHEL 7, і це призвело б до того, що я змусив би горіхів. Що я виявив - це те, що /etc/bashrcв RHEL 7 відбулася зміна, яка викликає іменування вікон у screenта tmuxзмінюється кожного разу, коли команда, яка подобається cdабо lsвиконується. На екрані розділу *)

if [ -e /etc/sysconfig/bash-prompt-screen ]; then
    PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
## RHEL 7
    PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'

## RHEL 6
    PROMPT_COMMAND='printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi

Так у RHEL 7 зміна була від ] 0; до k у розділі PROMPT_COMMAND.

Я розглядав можливість відкрити помилку, але просто ніколи її не обійшов. Зазвичай я просто змінюю його вручну в новому встановленні.

  • Зміни, внесені для оновлення форматування

6

Швидше за все, у вас PROMPT_COMMANDзмінна встановлена ​​на щось подібне

printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"

У мене саме це в системі CentOS 7. Це встановлює назву вікна xterm після кожної команди, яка screenвикористовується як заголовок вікна.

Просто зніміть PROMPT_COMMANDйого .bashrcабо відредагуйте, /etc/bashrcщоб не встановити його.


Дивіться нижче, щоб зробити це більш постійним.
математика

2

Якщо ви перевірите .bashrcабо /etc/bashrc, можливо, ви побачите ifабо з caseчим пов’язано screen.

У моєму випадку це було щось на кшталт:

if [ -e /etc/sysconfig/bash-prompt-screen ]; then
    PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
    PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi

при case $TERM inв /etc/bashrcфайлі.

Проблема полягала в тому, що у мене не було файлу /etc/sysconfig/bash-prompt-screenтак PROMPT_COMMANDпід elseвикористовується.

Я просто створив порожній /etc/sysconfig/bash-prompt-screenфайл, тоді заголовки вікон екрану більше не змінюються динамічно!


Необхідно зробити порожній файл виконуваним, або ви отримаєте попередження щоразу, коли запуск bash (наприклад, при вході для всіх).
математика
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.