12 votes

Conservation des couleurs de l'invite bash lors du démarrage d'une session écran

Lorsque je me connecte à une boîte Ubuntu Lucid, l'invite est toute jolie, avec des couleurs. Tout est par défaut, pour autant que je sache. Voici l'écran extérieur de mon $PS1 :

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

Before connecting with screen

Mais dès que je mets l'écran en marche, les couleurs disparaissent. Tout le reste va bien, et mon écran peut supporter les couleurs (remarquez que le symbole . y .. dans ce ls -al sont bleus) mais pas l'invite. En théorie, tout devrait être exactement pareil. $PS1 à l'intérieur de l'écran :

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

after screening in

EDIT : C'est juste un écran simple.

18voto

Matt Hamilton Points 98268

Vous pouvez modifier la ligne suivante dans votre .bashrc (c'est le numéro 39 dans mon .bashrc) :

#force_color_prompt=yes

Changer pour :

force_color_prompt=yes

Cela pourrait éventuellement être gênant si vous vous connectez depuis un endroit où la couleur n'est pas prise en charge, mais je trouve cela très peu probable.

4voto

Piotr Lesnicki Points 4169

Screen utilise normalement un type de terminal spécial, tel que "screen", ou si vous le définissez dans votre .screenrc, "screen-256color".

Il suffit de rechercher dans votre .bashrc la déclaration de cas de détection de couleur et d'ajouter screen à la liste.

Par exemple, quelque chose comme ça :

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

J'utilise des terminaux à 256 couleurs, donc j'ai juste besoin de l'option 256 L'énoncé case, puisqu'il capture xterm-256color, gnome-256color, et screen-256color. Votre expérience peut varier.

3voto

djeikyb Points 28025

El .screenrc Le fichier est un mystère pour moi. Le mien est un charabia que j'ai copié depuis les internets. Cependant, je vois quelques lignes qui semblent être pertinentes pour votre problème :

# 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'

Je pense que si vous ajoutez les lignes ci-dessus aux vôtres, vous obtiendrez de la couleur. Voici mon ensemble .screenrc pour référence :

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"

2voto

mercutio Points 5828

Votre PS1 devrait être placé dans .bashrc pas .bash_profile .

Si ce n'est pas le problème, veuillez modifier votre question pour inclure la ligne que vous avez définie PS1 à.

Vous pouvez aussi essayer d'exécuter ceci :

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

1voto

Cam Points 111

Ajoutez ceci à votre ~/.screenrc

shell -$SHELL

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X