如何防止GNU屏幕重置我的提示?

当我运行屏幕时,它改变我的提示。 我如何防止这种行为? 例如:

$ echo $PS1 \[\e]0;\h:Prod\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ $ screen $ echo $PS1 [\u@\h \W]\$ 

有趣的是,它不会在其他机器上这样做。 有问题的机器是Redhat 4 update 4,Screen version 4.00.02(FAU)05年12月5日。

尝试添加(假设它不在那里)您的.screenrc文件:

 shell  -  $ SHELL

这会给你一个loginshell当你初始化一个屏幕会话或从一个内部创build另一个terminal。

在设置提示之前,许多发行版检查terminal的types。 例如,Ubuntu在默认的.bashrc中包含了这个小小的gem:

 #设置一个奇特的提示(非颜色,除非我们知道我们“想要”的颜色)
在“$ TERM”的情况下
     xterm-color)color_prompt = yes ;;
 ESAC

由于屏幕使用自己的TERMvariables(“屏幕”),bash认为它不能显示花哨的颜色提示,所以它默认是一个更简单的。 屏幕当然完全能够像普通terminal一样提供相同的复杂提示。

所以,要覆盖这个行为,只需在~/.bashrc文件的末尾设置你喜欢的PS1选项即可。 或者,如果您感觉冒险,find检查TERMvariables的值并修改它以接受除“xterm-color”之外的“屏幕”的testing。

也许这是一个在〜/ .screenrc文件中设置的自定义variables?

SHELL -$SHELL的计算机上有同样的问题(屏幕上没有更多的自定义提示),screenrc中没有setenv PS1 ,也没有针对(dumb)terminal在bashrc中的特殊testing。

设置使用的$ TERM:

 $ echo $TERM urxvt-unicode-256color 

在screenrc下得到我的自定义提示:

 - #term xterm-256color + term urxvt-unicode-256color 

PS:另外一个账号不需要这个,但是bashrc这样testingdircolors和一个现代terminal1 :

 if [[ $'\n'${match_lhs} == *$'\n'"TERM "${safe_term}* ]] ; then PS1=<my fancy prompt> 

我相信这也是一样的:

 if [ "$TERM" != "dumb" ]; then PS1=<my fancy prompt>