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\]\$
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\$
EDIT: Ceci est tout simplement écran Vanilla.
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.
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"
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
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. ????
Ajoutez ceci à votre ~/.screenrc
Shell -$Shell
Invoquer l'écran avec -T xterm
fonctionne pour moi, alors simplement:
screen -T xterm
Pas besoin de modifier les fichiers.