如何防止GNU屏幕重置提示?[关闭]


13

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

$ 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,其屏幕版本为4.00.02(FAU),2007年12月5日。

Answers:


16

尝试添加(假设它尚不存在)到您的.screenrc文件中:

壳-$ SHELL

当您初始化屏幕会话或从一个会话中创建另一个终端时,这将为您提供一个登录shell。


1
我的.screenrc中有“ shell / bin / bash”,显然应该是“ shell-/ bin / bash”或您提供的。
Swoogan

2

许多发行版在设置提示之前都会检查终端的类型。例如,Ubuntu在默认的.bashrc中包含这个小宝石:

#设置一个奇特的提示(非彩色,除非我们知道我们要“彩色”)
情况为“ $ TERM”
    xterm-color)color_prompt = yes ;;
埃萨克

由于screen使用了自己的TERM变量(“ screen”),因此bash认为它无法显示奇特的颜色提示,因此默认为简单的提示。屏幕当然具有与普通终端相同的复杂提示功能。

因此,要覆盖此行为,只需在~/.bashrc文件末尾硬设置您首选的PS1选项。或者,如果您喜欢冒险,可以找到测试以检查TERM变量的值,并对其进行修改以接受除“ xterm-color”之外的“ screen”。


1

也许这是在〜/ .screenrc文件中设置的自定义变量?


1
是的,请在全局或个人屏幕上检查setenv PS1
半径

4
那将是什么自定义变量?如果您不知道答案,请不要回答。
Swoogan

0

机器上有相同的问题(屏幕上没有更多自定义提示), SHELL -$SHELLsetenv PS1在screenrc中没有,并且在bashrc中没有针对(哑)终端的特殊测试。

设置使用的$ TERM:

$ echo $TERM
urxvt-unicode-256color

在screenrc中的“屏幕”下,我的自定义提示返回:

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

PS:另一个帐户不需要这样做,但是bashrc通过这种方式测试dircolors和现代终端1

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

我相信这也可以:

if [ "$TERM" != "dumb" ]; then
PS1=<my fancy prompt>
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.