Окно экрана GNU переименовывает неприятность

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

Таким образом, в 7-м РЕЛЕ изменение было от ] 0; для K в разделе PROMPT_COMMAND.

Я думал об открытии ошибки, но так и не смог ее обойти. Я обычно просто меняю его вручную при новой установке.

  • Изменения, внесенные для обновления форматирования
willg
источник
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файл, тогда заголовки окон экрана больше не меняются динамически!

GyuHyeon Choi
источник
Необходимо сделать пустой файл исполняемым, иначе вы получите предупреждение при каждом запуске bash (например, при входе в систему для всех).
математика