web-dev-qa-db-fra.com

Conserver les couleurs d'invite bash lors du démarrage d'une session d'écran

Lorsque je ssh dans une boîte Ubuntu Lucid, l'invite est toute jolie, avec des couleurs. Tout est la valeur par défaut, à ma connaissance. Voici mon écran extérieur $ 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 une fois que j'ai commencé l'écran, les couleurs disparaissent. Tout le reste est correct et mon écran prend en charge les couleurs (notez que les . et .. de ce ls -al sont en bleu), mais l'invite ne l'est pas. En théorie, tout devrait être exactement pareil. $ PS1 dans l’écran:

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

after screening in

EDIT: Ceci est tout simplement écran Vanilla.

8
chmullig

Vous pouvez éditer la ligne suivante dans votre .bashrc (c'est la # 39 dans mon .bashrc):

#force_color_Prompt=yes

Changer en:

force_color_Prompt=yes

Cela pourrait être gênant si vous vous connectez à un endroit où la couleur n'est pas prise en charge, mais je la trouve très improbable.

13
LasseValentini

Le fichier .screenrc est un mystère pour moi. Le mien est gobbledygook que j'ai copypasta des internets. Cependant, je vois quelques lignes qui semblent 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 tout mon .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"
3
djeikyb

Votre réglage PS1 doit être placé dans .bashrc et non pas .bash_profile.

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

Vous pouvez également essayer de les exécuter:

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
Mikel

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 regarder dans votre .bashrc l’instruction de cas de détection de couleur et d’ajouter un écran à la liste.

Par exemple, quelque chose comme ceci:

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

J'utilise des types de terminaux à 256 couleurs; j'ai donc simplement besoin de l'instruction 256 case, car elle capture xterm-256color, gnome-256color et screen-256color. Votre kilométrage peut varier. ????

2
m0j0

Ajoutez ceci à votre ~/.screenrc

Shell -$Shell
1
Cam

Invoquer l'écran avec -T xterm fonctionne pour moi, alors simplement:

screen -T xterm

Pas besoin de modifier les fichiers.

0
twildfarmer