Janela GNU Screen renomear incômodo

13

Gosto de exibir uma sessão de tela com conexões SSH pré-abertas para os servidores principais que administro no escritório. Dou a essas janelas um nome muito breve, geralmente de 2 a 4 caracteres, para que elas apareçam na minha barra de status da tela com esses nomes. Então, eu vou ter uma entrada na tela que se parece

0$ jen1 ...

Agora, quando preciso mudar para esse servidor e fazer qualquer coisa, mesmo que simples, buscar uma listagem de diretório, esse nome se expande repentinamente e se torna

0$ ghellings@devjenkins01

O mesmo acontece em todas as janelas que eu as acesso, fazendo com que minha barra de status exceda rapidamente a largura horizontal da minha tela. Gostaria de bloquear o nome no momento da criação da janela e impedir que os aplicativos clientes o alterem. Não quero que nenhum aplicativo seja capaz de alterar o título da janela da tela (exatamente o oposto do que muitas pessoas parecem estar perguntando). Isso se torna especialmente complicado quando eu mudo para essa tela e abro um diretório em algum lugar. Então o título da tela se torna

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

Eu quero que ele mude apenas o status ativo, para que ele sempre leia

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

Existe uma maneira de bloquear o nome da janela e impedir a alteração?

Greg Hellings
fonte

Respostas:

8

Descobri isso cedo nos testes do RHEL 7 e isso me deixou maluco. O que descobri é que houve uma alteração /etc/bashrcno RHEL 7 que causa a nomeação de janelas screene tmuxa alteração sempre que um comando como cdou lsé executado. Na tela de seção *)

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

Assim, no RHEL 7, a mudança foi de ] 0; para k na seção PROMPT_COMMAND.

Eu tinha pensado em abrir um bug, mas nunca cheguei a ele. Normalmente, eu apenas altero manualmente em uma nova instalação.

  • Alterações feitas para atualizar a formatação
willg
fonte
6

Provavelmente, você tem a PROMPT_COMMANDvariável definida como algo como

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

Eu tenho exatamente isso em um sistema CentOS 7. Isso define o título da janela xterm após cada comando, que screenusa como título da janela.

Apenas desative o PROMPT_COMMANDseu .bashrcou edite /etc/bashrcpara não defini-lo.

katti
fonte
Veja abaixo para tornar isso mais permanente.
math
2

Se você marcar .bashrcou /etc/bashrc, poderá ver ifou com o caseque está relacionado screen.

No meu caso, era algo como:

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

sob case $TERM inno /etc/bashrcarquivo.

O problema era que eu não tinha o arquivo /etc/sysconfig/bash-prompt-screentão PROMPT_COMMANDabaixo elseé usado.

Acabei de criar um /etc/sysconfig/bash-prompt-screenarquivo vazio e os títulos das janelas da tela não são mais dinamicamente alterados!

GyuHyeon Choi
fonte
É necessário tornar o arquivo vazio executável ou você receberá um aviso toda vez que o bash for iniciado (por exemplo, no login para todos).
math