Zmiana nazwy okna ekranu GNU na uciążliwe

13

Lubię wyświetlać sesję ekranową z wstępnie otwartymi połączeniami SSH z serwerami głównymi, którymi administruję w biurze. Każdemu z tych okien nadaję bardzo krótką nazwę, zwykle 2-4 znaki, więc pojawiają się one na pasku stanu ekranu z tymi nazwami. Więc będę miał ekran, który wygląda

0$ jen1 ...

Teraz, gdy muszę przełączyć się na ten serwer i zrobić coś tak prostego, jak pobranie listy katalogów, nazwa ta nagle się rozszerza i staje się

0$ ghellings@devjenkins01

To samo dzieje się z każdym oknem, gdy do niego wchodzę, dzięki czemu mój pasek stanu szybko przepełnia poziomą szerokość ekranu. Chciałbym zablokować nazwę w miejscu podczas tworzenia okna i uniemożliwić jej zmianę przez aplikacje klienckie. Nie chcę, aby jakiekolwiek aplikacje mogły zmieniać tytuł okna ekranowego (wręcz przeciwnie, niż pyta wiele osób). Staje się to szczególnie uciążliwe, gdy przejdę do tego ekranu i gdzieś otworzę katalog. Następnie tytuł ekranu staje się

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

Chcę, aby zmienił tylko stan aktywny, więc zawsze będzie czytał

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

Czy mogę zablokować nazwę okna i zapobiec jej zmianie?

Greg Hellings
źródło

Odpowiedzi:

8

Znalazłem to wcześnie w testach RHEL 7 i doprowadziłoby mnie to do szału. Co odkryłem jest to, że nie było zmiany /etc/bashrcw RHEL 7, który powoduje, że nazwanie w oknach screeni tmuxna zmiany, gdy komenda jak cdlub lsjest prowadzony. Na ekranie sekcji *)

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

Tak więc w RHEL 7 zmiana była od ] 0; do k w sekcji PROMPT_COMMAND.

Zastanawiałem się nad otwarciem błędu, ale po prostu nigdy go nie załatwiłem. Zwykle po prostu zmieniam go ręcznie przy nowej instalacji.

  • Zmiany wprowadzone w celu aktualizacji formatowania
willg
źródło
6

Najprawdopodobniej masz PROMPT_COMMANDzmienną ustawioną na coś takiego

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

Mam to dokładnie w systemie CentOS 7. Ustawia tytuł okna xterm po każdym poleceniu, które jest screenużywane jako tytuł okna.

Po prostu usuń PROMPT_COMMANDustawienie .bashrclub edytuj, /etc/bashrcaby go nie ustawić.

katti
źródło
Zobacz poniżej, aby uczynić to bardziej trwałym.
matematyka,
2

Jeśli zaznaczysz .bashrclub /etc/bashrc, możesz zobaczyć iflub casejest to związane screen.

W moim przypadku było to coś takiego:

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

pod case $TERM inw /etc/bashrcpliku.

Problem polegał na tym, że nie miałem pliku, /etc/sysconfig/bash-prompt-screenwięc użyto go PROMPT_COMMANDponiżej else.

Właśnie utworzyłem pusty /etc/sysconfig/bash-prompt-screenplik, a tytuły okien ekranowych nie są już dynamicznie zmieniane!

GyuHyeon Choi
źródło
Musisz sprawić, by pusty plik był wykonywalny, inaczej będziesz otrzymywać ostrzeżenie za każdym razem, gdy uruchomisz bash (np. Przy logowaniu dla wszystkich).
matematyka