Retener los colores del indicador de bash al iniciar una sesión de pantalla


11

Cuando entro en un cuadro de Ubuntu Lucid, el mensaje es todo bonito, con colores. Todo es el valor predeterminado, que yo sepa. Aquí está mi pantalla externa de $ PS1:

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

Antes de conectar con la pantalla

Pero luego, una vez que comienzo la pantalla, los colores desaparecen. Todo lo demás está bien, y mi pantalla puede admitir colores (tenga en cuenta que .y ..en esto ls -alson azules) pero el mensaje no lo es. En teoría, todo debería ser exactamente igual. $ PS1 dentro de la pantalla:

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

después de la detección en

EDITAR: Esto es simplemente una simple pantalla de vainilla.


¿Es esta pantalla simple o tienes byobu instalado? (Aunque esto no importa.)
belacqua

2
¿ echo $PS1Imprime lo mismo dentro de la pantalla y fuera de la pantalla?
Mikel

$ PS1 es de hecho diferente. Pregunta editada para incluir eso.
chmullig

Respuestas:


16

Puede editar la siguiente línea en su .bashrc (es el # 39 en mi .bashrc):

#force_color_prompt=yes

Cambiar a:

force_color_prompt=yes

Esto podría ser molesto si inicia sesión desde un lugar donde no se admite el color, pero me parece muy poco probable.


Perfecto, eso lo hizo por mí. Puedo ver que es problemático si inicio sesión desde algún lugar sin color, pero eso será bastante raro. ¡Gracias!
chmullig

El cambio debe hacerse en la máquina del servidor, no en el cliente.
Adam Ryczkowski

3

El .screenrcarchivo es un misterio para mí. El mío es engullido que copié desde las internet. Sin embargo, veo algunas líneas que parecen ser relevantes para su 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'

Creo que si agrega las líneas anteriores a las suyas, obtendrá color. Aquí está mi todo .screenrcpara referencia:

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

Su PS1configuración debe colocarse en .bashrc, no .bash_profile.

Si ese no es el problema, edite su pregunta para incluir la línea que ha establecido PS1.

También puede intentar ejecutar estos:

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

Screen normalmente usa un tipo de terminal especial, como "screen", o si lo configura en su .screenrc, "screen-256color".

Simplemente busque en su .bashrc la declaración de caso de detección de color y agregue la pantalla a la lista.

Por ejemplo, algo como esto:

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

Utilizo tipos de terminales de 256 colores, por lo que solo necesito la declaración de 256 casos, ya que captura xterm-256color, gnome-256color y screen-256color. Su experiencia puede ser diferente. 🙂


1

Agregue esto a su ~ / .screenrc

shell -$SHELL

+1. Esto me devolvió mi bonito mensaje de bash en OS X.
funroll

0

Invocar pantalla con -T xtermtrabajos para mí, así que simplemente:

screen -T xterm

No es necesario modificar ningún archivo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.