GNU Screen Fenster umbenennen störend


13

Ich möchte eine Bildschirmsitzung mit vorab geöffneten SSH-Verbindungen zu den primären Servern öffnen, die ich im Büro verwalte. Ich gebe diesen Fenstern jeweils einen sehr kurzen Namen, normalerweise 2 bis 4 Zeichen, damit sie in der Statusleiste meines Bildschirms mit diesen Namen angezeigt werden. Also werde ich einen Bildschirmeintrag haben, der so aussieht

0$ jen1 ...

Wenn ich jetzt zu diesem Server wechseln und etwas tun muss, das so einfach ist wie das Abrufen einer Verzeichnisliste, wird dieser Name plötzlich erweitert und wird zu

0$ ghellings@devjenkins01

Das gleiche passiert für jedes Fenster, wenn ich darauf zugreife. Dadurch läuft meine Statusleiste schnell über die horizontale Breite meines Bildschirms. Ich möchte den Namen beim Erstellen des Fensters fixieren und verhindern, dass Client-Anwendungen ihn ändern. Ich möchte nicht, dass Anwendungen den Titel des Bildschirmfensters ändern können (ganz im Gegenteil zu dem, was viele Leute zu fragen scheinen). Dies wird besonders umständlich, wenn ich in diesen Bildschirm wechsle und irgendwo ein Verzeichnis öffne. Dann wird der Bildschirmtitel

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

Ich möchte, dass es nur den aktiven Status ändert, damit er immer entweder liest

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

Kann ich den Fensternamen sperren und verhindern, dass er geändert wird?

Antworten:


8

Ich habe das schon früh im RHEL 7-Test gefunden und es würde mich verrückt machen. Was ich entdeckt, dass es eine Änderung war /etc/bashrcin RHEL 7, die die Benennung von Fenstern in verursacht screenund tmuxzu ändern , wenn ein Befehl wie cdoder lsausgeführt wird. Im Schnittbild *)

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

In RHEL 7 war die Änderung also von ] 0; bis k im Abschnitt PROMPT_COMMAND.

Ich hatte überlegt, einen Bug zu öffnen, bin aber nie dazu gekommen. Normalerweise ändere ich es einfach manuell bei einer Neuinstallation.

  • Änderungen an der Aktualisierung der Formatierung

6

Höchstwahrscheinlich haben Sie die PROMPT_COMMANDVariable auf so etwas wie gesetzt

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

Ich habe genau das auf einem CentOS 7-System. Dies setzt den xterm Fenstertitel nach jedem Befehl, der screenals Fenstertitel verwendet wird.

Deaktivieren PROMPT_COMMANDSie einfach in Ihrem .bashrcoder bearbeiten Sie /etc/bashrc, um es nicht festzulegen.


Siehe unten, um dies dauerhafter zu machen.
Mathe

2

Wenn Sie .bashrcoder markieren /etc/bashrc, sehen Sie möglicherweise, ifoder casewas damit zusammenhängt screen.

In meinem Fall war es so etwas wie:

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

unter case $TERM inin /etc/bashrcDatei.

Das Problem war, dass ich die Datei nicht hatte, /etc/sysconfig/bash-prompt-screenalso PROMPT_COMMANDunter elseverwendet wird.

Ich habe gerade eine leere /etc/sysconfig/bash-prompt-screenDatei erstellt, dann werden die Titel der Bildschirmfenster nicht mehr dynamisch geändert!


Müssen Sie die leere Datei ausführbar machen, sonst erhalten Sie jedes Mal eine Warnung, wenn Bash gestartet wird (z. B. bei der Anmeldung für alle).
Mathe
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.