Jak zapobiec ponownemu wyświetlaniu monitu na ekranie GNU? [Zamknięte]

13

Po uruchomieniu ekranu zmienia się monit. Jak mogę zapobiec takiemu zachowaniu? Na przykład:

$ echo $PS1
\[\e]0;\h:Prod\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$
$ screen
$ echo $PS1
[\u@\h \W]\$

Co ciekawe, nie robi tego na innych komputerach. Maszyna, o której mowa, to aktualizacja Redhat 4 4, z wersją ekranu 4.00.02 (FAU) 5 grudnia 03.

Swoogan
źródło

Odpowiedzi:

16

Spróbuj dodać (zakładając, że go jeszcze nie ma) do pliku .screenrc:

shell - $ SHELL

Daje to powłokę logowania podczas inicjowania sesji ekranowej lub tworzenia innego terminala z poziomu jednego.

Gary Chambers
źródło
1
Miałem „shell / bin / bash” w moim .screenrc, najwyraźniej powinien to być „shell - / bin / bash” lub to, co podałeś.
Swoogan
2

Wiele dystrybucji sprawdza typ terminala przed ustawieniem monitu. Na przykład Ubuntu zawiera ten mały klejnot w domyślnym pliku .bashrc:

# ustawić fantazyjny monit (bez koloru, chyba że wiemy, że „chcemy” kolor)
przypadku „$ TERM” w
    xterm-color) color_prompt = tak ;;
esac

Ponieważ screen używa własnej zmiennej TERM („screen”), bash uważa, że ​​nie jest w stanie wyświetlić fantazyjnego monitu o kolor, więc domyślnie jest on prostszy. Ekran jest oczywiście w pełni zdolny do wykonywania takich samych złożonych podpowiedzi jak normalny terminal.

Aby więc zastąpić to zachowanie, po prostu ustaw preferowane opcje PS1 na końcu ~/.bashrcpliku. Lub, jeśli masz ochotę na przygodę, znajdź test, który sprawdza wartość zmiennej TERM i zmodyfikuj ją tak, aby akceptowała „screen” oprócz „xterm-color”.

Insyte
źródło
1

Być może jest to dostosowana zmienna ustawiona w pliku ~ / .screenrc?

Babu
źródło
1
Tak, sprawdź setenv PS1 w globalnym lub osobistym screenrc
promieniu
4
A jaka by to była dostosowana zmienna? Jeśli nie znasz odpowiedzi, nie odpowiadaj.
Swoogan
0

Wystąpił ten sam problem (koniec niestandardowego monitu na ekranie) na komputerze z SHELL -$SHELLi bez setenv PS1screenrc, a także brak specjalnego testu dla (głupiego) terminala w bashrc.

Ustawienie używanego $ TERM:

$ echo $TERM
urxvt-unicode-256color

w screenrc otrzymałem mój niestandardowy monit z powrotem w trybie ekranu:

- #term xterm-256color
+ term urxvt-unicode-256color

PS: inne konto nie było tego potrzebne, ale testy bashrc dla dircolors i nowoczesny terminal w ten sposób 1 :

if [[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] ; then
PS1=<my fancy prompt>

Wierzę, że to również działa:

if [ "$TERM" != "dumb" ]; then
PS1=<my fancy prompt>
tuk0z
źródło