当我运行屏幕时,它改变我的提示。 我如何防止这种行为? 例如:
$ 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>