Mantenimento dei colori del prompt di bash all'avvio di una sessione dello schermo


11

Quando scrivo in una scatola Ubuntu Lucid il prompt è tutto carino, con i colori. Tutto è predefinito, per quanto ne so. Ecco il mio schermo esterno $ PS1:

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@dev\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

Prima di connettersi con lo schermo

Ma poi una volta che inizio lo schermo i colori scompaiono. Tutto il resto va bene e il mio schermo può supportare i colori (si noti che .e ..in questo ls -alsono blu) ma il prompt non lo è. In teoria tutto dovrebbe essere esattamente lo stesso. $ PS1 schermo interno:

${debian_chroot:+($debian_chroot)}\u@dev:\w\$

dopo lo screening in

EDIT: Questo è solo un semplice schermo alla vaniglia.


Questo semplice schermo alla vaniglia o hai installato byobu? (Anche se non importa.)
belacqua,

2
Fa echo $PS1stampare la stessa cosa dentro schermo e lo schermo esterno?
Mikel,

$ PS1 è davvero diverso. Domanda modificata per includerlo.
Chmullig,

Risposte:


16

Puoi modificare la seguente riga nel tuo .bashrc (è # 39 nel mio .bashrc):

#force_color_prompt=yes

Passare a:

force_color_prompt=yes

Questo potrebbe essere fastidioso se accedi da qualche parte in cui il colore non è supportato, ma lo trovo altamente improbabile.


Perfetto, è stato per me. Riesco a vedere che è problematico se mi accedo da qualche parte senza colore, ma sarà piuttosto raro. Grazie!
Chmullig,

La modifica deve essere eseguita sul computer server, non sul client.
Adam Ryczkowski il

3

Il .screenrcfile è un mistero per me. Il mio è gobbledygook che ho copypasta da internet. Tuttavia, vedo alcune righe che sembrano rilevanti per il tuo problema:

# terminfo and termcap for nice 256 color terminal
# allow bold colors - necessary for some reason
attrcolor b ".I" 
# tell screen how to set colors. AB = background, AF=foreground
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'

Penso che se aggiungi le righe sopra alle tue, otterrai il colore. Ecco il mio intero .screenrcper riferimento:

jake@daedalus:~$ cat .screenrc 
startup_message off # skip splash screen
vbell off # Kill the annoying dog

# Voodoo
hardstatus alwayslastline
hardstatus string '%{= wk}%-Lw%{= KW}%50>%n%f* %t%{= dK}%+Lw%<'

# terminfo and termcap for nice 256 color terminal
# allow bold colors - necessary for some reason
attrcolor b ".I" 
# tell screen how to set colors. AB = background, AF=foreground
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
# erase background with current bg color 
defbce "on"

2

L' PS1impostazione dovrebbe essere inserita .bashrc, no .bash_profile.

Se questo non è il problema, modifica la domanda per includere la riga impostata PS1.

Puoi anche provare a eseguire questi:

echo "$TERM"                                 # will probably print "screen"
tput setaf 2 | cat -vte                      # should print "^[[32m"
echo "$(tput setaf 2)"green"$(tput sgr0)"    # should print "green" in green

2

Lo schermo normalmente usa un tipo di terminale speciale, come "schermo", o se lo si imposta in .screenrc, "schermo-256colore".

Cerca nel tuo .bashrc l'istruzione del caso di rilevamento del colore e aggiungi la schermata all'elenco.

Ad esempio, qualcosa del genere:

case "$TERM" in
    xterm)
        color_prompt=yes
        ;;
    screen)
        color_prompt=yes
        ;;
    *256*) 
        color_prompt=yes
        ;;
esac

Uso tipi di terminale a 256 colori, quindi ho solo bisogno dell'istruzione case 256 , poiché cattura xterm-256color, gnome-256color e screen-256color. Il tuo chilometraggio può variare. 🙂


1

Aggiungi questo al tuo ~ / .screenrc

shell -$SHELL

+1. Questo mi ha restituito il mio bell'aspetto bash su OS X.
funroll

0

Invocare lo schermo con le -T xtermopere per me, quindi semplicemente:

screen -T xterm

Non è necessario modificare alcun file.

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.