启动屏幕会话时保留 bash 提示颜色

启动屏幕会话时保留 bash 提示颜色

当我通过 ssh 进入 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\]\$

连接屏幕之前

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

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

在筛选后

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

答案1

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

#force_color_prompt=yes

改成:

force_color_prompt=yes

如果您从不支持颜色的地方登录,这可能会令人烦恼,但我认为这种情况不太可能发生。

答案2

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

只需在 .bashrc 中查找颜色检测案例语句并将屏幕添加到列表中。

例如这样的事情:

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

我使用 256 色终端类型,因此我只需要256case 语句,因为它捕获 xterm-256color、gnome-256color 和 screen-256color。您的里程可能会有所不同。

答案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"

答案4

将其添加到您的 ~/.screenrc

shell -$SHELL

相关内容