Ekran oturumu başlatırken bash istem renklerini koruma


11

Ben bir Ubuntu Lucid kutusuna ssh zaman istemi renkleri ile güzel. Bildiğim kadarıyla her şey varsayılan. İşte benim $ PS1 dış ekran:

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

Ekrana bağlamadan önce

Ama sonra ekrana başladığımda renkler kayboluyor. Geri kalan her şey gayet iyi ve benim ekranı (yani uyarı renklerini destekleyebilir .ve ..bu ls -almavi) fakat istemi değildir. Teoride her şey tamamen aynı olmalıdır. $ PS1 iç ekran:

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

gösterdikten sonra

EDIT: Bu sadece düz vanilya ekranı.


Bu düz vanilya ekranı mı yoksa byobu yüklü mü? (Bu önemli olmasa da)
belacqua

2
echo $PS1Aynı şeyi ekranın içine ve dışına yazdırıyor mu ?
Mikel

$ PS1 gerçekten farklı. Soruyu içerecek şekilde düzenlendi.
chmullig

Yanıtlar:


16

Aşağıdaki satırı .bashrc dosyanızda düzenleyebilirsiniz (.bashrc dosyamda # 39):

#force_color_prompt=yes

Değişmek:

force_color_prompt=yes

Rengin desteklenmediği bir yerden giriş yaparsanız bu muhtemelen can sıkıcı olabilir, ancak son derece olası bulmuyorum.


Mükemmel, bu benim için yaptı. Renksiz bir yerden giriş yapmamın sorunlu olduğunu görebiliyorum, ancak bu oldukça nadir olacak. Teşekkürler!
chmullig

Değişikliğin istemci üzerinde değil sunucu makinesinde yapılması gerekir.
Adam Ryczkowski

3

.screenrcDosya benim için bir sır olduğunu. Benim internetten kopyaladığım gobbledygook. Ancak, sorununuzla alakalı görünen birkaç satır görüyorum:

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

Yukarıdaki satırları sizinkine eklerseniz, renk alırsınız. İşte benim .screenrcreferans için bütün :

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

Kişisel PS1ayar yerleştirilmelidir .bashrcdeğil .bash_profile.

Sorun bu değilse, lütfen ayarladığınız satırı içerecek şekilde sorunuzu düzenleyin PS1.

Bunları çalıştırmayı da deneyebilirsiniz:

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

Ekran normalde "ekran" gibi özel bir terminal türü kullanır veya .screenrc, "ekran-256renk" olarak ayarlarsanız.

Renk algılama durumu bildirimi için .bashrc'nize bakın ve listeye ekran ekleyin.

Örneğin, böyle bir şey:

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

256 renkli terminal türlerini kullanıyorum, bu yüzden xterm-256color, gnome-256color ve screen-256color yakaladığından, sadece 256 vaka deyimine ihtiyacım var . Kilometreniz değişebilir. 🙂


1

Bunu ~ / .screenrc'nize ekleyin

shell -$SHELL

+1. Bu beni OS X üzerinde güzel görünümlü bash
istemimi

0

Ekranı çağırmak -T xtermbenim için çalışıyor, bu yüzden basitçe:

screen -T xterm

Herhangi bir dosyayı değiştirmenize gerek yok.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.