Come posso impedire a GNU Screen di ripristinare il mio prompt? [chiuso]


13

Quando eseguo schermo cambia il mio prompt. Come posso prevenire questo comportamento? Per esempio:

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

È interessante notare che non lo fa su altre macchine. La macchina in questione è Redhat 4 aggiornamento 4, con la versione schermo 4.00.02 (FAU) 5-dic-03.

Risposte:


16

Prova ad aggiungere (supponendo che non sia già lì) al tuo file .screenrc:

shell - $ SHELL

Questo ti darà una shell di login quando inizializzi una sessione dello schermo o crei un altro terminale all'interno di uno.


1
Avevo "shell / bin / bash" nel mio .screenrc, apparentemente avrebbe dovuto essere "shell - / bin / bash" o quello che mi hai fornito.
Swoogan,

2

Molte distribuzioni controllano il tipo di terminale prima di impostare il prompt. Ubuntu, ad esempio, contiene questo piccolo gioiello nel predefinito .bashrc:

# imposta un prompt di fantasia (non colorato, a meno che non sappiamo di "voler" colore)
caso "$ TERM" in
    xterm-color) color_prompt = yes ;;
esac

Poiché lo schermo utilizza la propria variabile TERM ("schermo"), bash pensa che non sia in grado di visualizzare un prompt di colori fantasiosi, per impostazione predefinita è uno più semplice. Lo schermo è, ovviamente, pienamente capace delle stesse complesse istruzioni di un normale terminale.

Quindi, per ignorare questo comportamento, basta impostare le opzioni PS1 preferite alla fine del ~/.bashrcfile. Oppure, se ti senti avventuroso, trova il test che controlla il valore della variabile TERM e modificalo per accettare "schermo" oltre a "xterm-color".


1

Forse questa è una variabile personalizzata che è impostata nel file ~ / .screenrc?


1
Sì, controlla setenv PS1 nella schermata globale o personale
raggio

4
E quale variabile personalizzata sarebbe? Se non conosci la risposta, non rispondere.
Swoogan,

0

Aveva lo stesso problema (niente più prompt personalizzati nella schermata) su una macchina con SHELL -$SHELLe no setenv PS1in screenrc e nessun test speciale per il terminale (stupido) in bashrc.

Impostazione del $ TERM utilizzato:

$ echo $TERM
urxvt-unicode-256color

in screenrc è tornato il mio prompt personalizzato sotto Screen:

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

PS: un altro account non ne aveva bisogno, ma bashrc test per dircolors e un terminale moderno in questo modo 1 :

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

Credo che funzioni anche questo:

if [ "$TERM" != "dumb" ]; then
PS1=<my fancy prompt>
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.