La finestra dello schermo GNU rinomina il disturbo


13

Mi piace aprire una sessione di schermo con connessioni SSH pre-aperte ai server primari che gestisco in ufficio. Dò a ciascuna finestra un nome molto breve, in genere 2-4 caratteri, quindi appaiono nella barra di stato della schermata con quei nomi. Quindi avrò una voce sullo schermo che assomiglia

0$ jen1 ...

Ora, quando ho bisogno di passare a quel server e fare qualsiasi cosa anche semplice come recuperare un elenco di directory, quel nome si espande improvvisamente e diventa

0$ ghellings@devjenkins01

Lo stesso accade per ogni finestra mentre accedo ad essa, facendo in modo che la mia barra di stato trabocchi rapidamente la larghezza orizzontale del mio schermo. Vorrei bloccare il nome in posizione al momento della creazione della finestra e impedire alle applicazioni client di modificarlo. Non voglio che nessuna applicazione sia in grado di cambiare il titolo della finestra dello schermo (al contrario di quello che sembra chiedere molta gente). Questo diventa particolarmente ingombrante quando passo a quella schermata e apro una directory da qualche parte. Quindi il titolo dello schermo diventa

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

Voglio che cambi solo lo stato attivo in modo che legga sempre entrambi

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

C'è un modo per bloccare il nome della finestra e impedirne la modifica?

Risposte:


8

L'ho trovato all'inizio nei test di RHEL 7 e mi avrebbe fatto impazzire. Quello che ho scoperto è che c'è stato un cambiamento /etc/bashrcin RHEL 7 che causa la denominazione di Windows screene tmuxcambia ogni volta che un comando gradisce cdo lsviene eseguito. Nella schermata della sezione *)

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

Quindi in RHEL 7 il cambio è stato da ] 0; to k nella sezione PROMPT_COMMAND.

Avevo pensato di aprire un bug, ma non ci ero mai riuscito. Di solito lo cambio manualmente su una nuova installazione.

  • Modifiche apportate per aggiornare la formattazione

6

Molto probabilmente, la PROMPT_COMMANDvariabile è impostata su qualcosa di simile

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

Ho esattamente questo su un sistema CentOS 7. Questo imposta il titolo della finestra xterm dopo ogni comando, che screenutilizza come titolo della finestra.

Basta non impostato PROMPT_COMMANDnel vostro .bashrco modificare /etc/bashrcdi non impostarla.


Vedi sotto per renderlo più permanente.
matematica

2

Se si seleziona .bashrco /etc/bashrc, è possibile visualizzare ifo a casecui è correlato screen.

Nel mio caso, era qualcosa del tipo:

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

sotto case $TERM innel /etc/bashrcfile.

Il problema era che non avevo il file, /etc/sysconfig/bash-prompt-screenquindi PROMPT_COMMANDsotto elseviene utilizzato.

Ho appena creato un /etc/sysconfig/bash-prompt-screenfile vuoto , quindi i titoli delle finestre dello schermo non vengono più modificati dinamicamente!


Devi rendere eseguibile il file vuoto o riceverai un avviso ogni volta che viene lanciato bash (es. Al login per tutti).
matematica,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.