开始屏幕会话时保留bash提示颜色


11

当我进入Ubuntu Lucid框时,提示非常漂亮,并带有颜色。据我所知,一切都是默认设置。这是我的$ PS1外屏幕:

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

与屏幕连接之前

但是,一旦我启动屏幕,颜色就会消失。一切是好的,我的屏幕可以支持的颜色(注意,...在此ls -al是蓝色的),但提示是没有的。理论上,一切都应该完全相同。屏幕内的$ PS1:

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

筛选后

编辑:这只是普通的香草屏幕。


这是普通的香草筛,还是您已安装byobu?(尽管这无关紧要。)
belacqua 2011年

2
是否echo $PS1打印同样的事情,里面的屏幕和屏幕之外?
Mikel

$ PS1确实不同。编辑的问题包括在内。
chmullig

Answers:


16

您可以在.bashrc中编辑以下行(在我的.bashrc中为39):

#force_color_prompt=yes

改成:

force_color_prompt=yes

如果您从不支持颜色的地方登录,这可能会很烦人,但我发现这种可能性很小。


完美,为我做到了。如果我碰巧从没有颜色的地方登录,我会发现这是有问题的,但这将非常罕见。谢谢!
chmullig

更改需要在服务器计算机而不是客户端上进行。
亚当·里奇科夫斯基

3

.screenrc文件对我来说是个谜。我从互联网上复制了我的照片。但是,我看到一些与您的问题相关的行:

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

我认为,如果将以上几行添加到您的行中,则会得到颜色。这是我的全部.screenrc供参考:

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

您的PS1设置应放在而.bashrc不是中.bash_profile

如果那不是问题,请编辑您的问题以包括您设置的行PS1

您也可以尝试运行以下命令:

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

屏幕通常使用特殊的终端类型,例如“ screen”,或者如果在.screenrc中设置,则为“ screen-256color”。

只需在.bashrc中查找颜色检测用例语句,然后将屏幕添加到列表中即可。

例如,如下所示:

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

我使用256色终端类型,所以我只需要256个 case语句,因为它捕获了xterm-256color,gnome-256color和screen-256color。你的旅费可能会改变。🙂



0

调用屏幕-T xterm对我有用,所以很简单:

screen -T xterm

无需修改任何文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.