Retendo as cores do prompt bash ao iniciar uma sessão de tela

6

Quando eu ssh em uma caixa Ubuntu Lucid, o prompt é todo bonito, com cores. Tudo é o padrão, tanto quanto eu sei. Aqui está minha tela externa de $ PS1:

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

Mas quando eu começo a tela, as cores desaparecem. Tudo o mais está bem, e minha tela pode suportar cores (observe que . e .. neste ls -al são azuis), mas o prompt não é. Em teoria, tudo deveria ser exatamente o mesmo. $ PS1 dentro da tela:

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

EDIT: Esta é apenas a tela de baunilha simples.

    
por chmullig 04.02.2011 / 05:28

5 respostas

8

Você pode editar a seguinte linha no seu .bashrc (é # 39 no meu .bashrc):

#force_color_prompt=yes

Mude para:

force_color_prompt=yes

Isso pode ser irritante se você fizer login em algum lugar onde cor não seja suportada, mas acho altamente improvável.

    
por LasseValentini 04.02.2011 / 09:52
2

O arquivo .screenrc é um mistério para mim. O meu é gobbledygook que eu copypasta dos internets. No entanto, vejo algumas linhas que parecem relevantes para o seu 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'

Eu acho que se você adicionar as linhas acima às suas, você terá cores. Aqui está todo o meu .screenrc para referência:

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"
    
por djeikyb 04.02.2011 / 07:39
2

Sua configuração de PS1 deve ser colocada em .bashrc , não .bash_profile .

Se esse não for o problema, edite sua pergunta para incluir a linha que você definiu PS1 .

Você também pode tentar executar estes:

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
    
por Mikel 04.02.2011 / 07:51
2

A tela normalmente usa um tipo de terminal especial, como "tela", ou se você configurá-lo em seu .screenrc, "screen-256color".

Basta olhar em seu .bashrc para a declaração de caso de detecção de cor e adicionar tela à lista.

Por exemplo, algo assim:

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

Eu uso tipos de terminal de 256 cores, então eu só preciso da 256 declaração de caso, já que ela pega o xterm-256color, gnome-256color e screen-256color. Sua milhagem pode variar.

por m0j0 18.02.2016 / 22:59
1

Adicione isto ao seu ~ / .screenrc

shell -$SHELL
    
por Cam 26.07.2013 / 10:52