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

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

当我运行 screen 时,它会改变我的提示。我该如何防止这种情况?例如:

$ 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 版本为 4.00.02 (FAU) 5-Dec-03。

答案1

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

外壳-$SHELL

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

答案2

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

# 设置一个奇特的提示(非彩色,除非我们知道我们“想要”颜色)
案例“$TERM”
    xterm 颜色)color_prompt=yes;;
埃萨克

由于 screen 使用自己的 TERM 变量(“screen”),bash 认为它无法显示花哨的彩色提示符,因此默认使用更简单的提示符。当然,Screen 完全能够显示与普通终端相同的复杂提示符。

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

答案3

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

答案4

SHELL -$SHELL在一台有且没有screenrc的机器上也遇到了同样的问题(屏幕上不再有自定义提示) setenv PS1,并且 bashrc 中没有针对(哑)终端的特殊测试。

设置使用的 $TERM:

$ echo $TERM
urxvt-unicode-256color

在 screenrc 中,在 Screen 下得到了我的自定义提示:

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

相关内容