GNU Screen 窗口重命名麻烦

GNU Screen 窗口重命名麻烦

我喜欢弹出一个屏幕会话,其中包含与我在办公室管理的主服务器的预先打开的 SSH 连接。我为每个窗口指定了一个非常简短的名称,通常为 2-4 个字符,因此它们会以这些名称出现在我的屏幕状态栏中。所以我会有一个看起来像这样的屏幕条目

0$ jen1 ...

现在,当我需要切换到该服务器并执行任何操作(甚至像获取目录列表一样简单)时,该名称会突然扩展并变为

0$ ghellings@devjenkins01

当我访问每个窗口时,都会发生同样的情况,使我的状态栏很快溢出屏幕的水平宽度。我想在窗口创建时锁定名称并防止客户端应用程序更改它。我不希望任何应用程序能够更改屏幕窗口标题(与许多人的要求恰恰相反)。一旦我切换到该屏幕并在某处打开目录,这就会变得特别麻烦。然后屏幕标题变成

 (0*$ ghellings@devjenkins01:/opt/somepackage/software/subdirectory)

我希望它只更改活动状态,因此它始终会读取

`0$ jen1` or `(0*$ jen1)`

有没有办法让我锁定窗口名称并防止更改它?

答案1

我在 RHEL 7 测试的早期就发现了这一点,这让我抓狂。我发现 RHEL 7 中的一项更改导致每当运行或 之类的命令时,和/etc/bashrc中的窗口命名都会发生变化。在部分屏幕中*)screentmuxcdls

if [ -e /etc/sysconfig/bash-prompt-screen ]; then
    PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
## RHEL 7
    PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'

## RHEL 6
    PROMPT_COMMAND='printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi

所以在 RHEL 7 中,变化来自]0;k在 PROMPT_COMMAND 部分。

我曾考虑过打开一个错误,但一直没有抽出时间。我通常只是在全新安装时手动更改它。

  • 为更新格式所做的更改

答案2

最有可能的是,您将PROMPT_COMMAND变量设置为类似

printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"

我在 CentOS 7 系统上就有这个。这会在每个命令之后设置 xterm 窗口标题,screen用作窗口标题。

只需PROMPT_COMMAND在您的中取消设置.bashrc或编辑/etc/bashrc即可不设置它。

答案3

如果您检查.bashrcor /etc/bashrc,您可能会看到iforcase与 相关screen

就我而言,它是这样的:

if [ -e /etc/sysconfig/bash-prompt-screen ]; then
    PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
    PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi

case $TERM in在文件下/etc/bashrc

问题是我没有该文件,/etc/sysconfig/bash-prompt-screen所以使用了PROMPT_COMMAND下面的文件。else

我刚刚创建了一个空/etc/sysconfig/bash-prompt-screen文件,然后屏幕窗口的标题不再动态更改!

相关内容