GNU Screen窗口重命名令人讨厌


13

我想通过与我在办公室管理的主要服务器的预打开SSH连接弹出一个屏幕会话。我给这些窗口一个非常简短的名称,通常为2-4个字符,因此它们以这些名称出现在屏幕状态栏中。所以我会有一个屏幕输入,看起来像

0$ jen1 ...

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

0$ ghellings@devjenkins01

当我访问每个窗口时,都会发生同样的情况,这会使状态栏迅速溢出屏幕的水平宽度。我想在窗口创建时将名称锁定在适当的位置,以防止客户端应用程序对其进行更改。我不希望任何应用程序都能够更改屏幕窗口标题(与许多人似乎要求的相反)。一旦我转到该屏幕并在某个地方打开目录,这将变得特别麻烦。然后屏幕标题变为

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

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

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

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

Answers:


8

我早在RHEL 7测试中就发现了这一点,这会让我发疯。我发现/etc/bashrc,RHEL 7 中有一个更改,导致Windows中的命名screen以及tmux每次运行诸如cd或的命令时都会更改ls。在部分屏幕中*)

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开始;到PROMPT_COMMAND部分中的k

我曾考虑过打开一个错误,但是从来没有解决过。我通常只是在全新安装上手动更改它。

  • 对更新格式所做的更改

6

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

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

我在CentOS 7系统上有这个功能。这将在每个命令之后设置xterm窗口标题,该screen名称用作窗口标题。

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


请参阅下文,使其更永久。
数学

2

如果选中.bashrc/etc/bashrc,则可能会看到ifcase与关联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文件,所以屏幕窗口的标题不再动态更改!


必须将空文件设为可执行文件,否则每次启动bash时都会收到警告(例如,所有人登录时)。
数学
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.