我喜欢弹出一个屏幕会话,其中包含与我在办公室管理的主服务器的预先打开的 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
中的窗口命名都会发生变化。在部分屏幕中*)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;到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
如果您检查.bashrc
or /etc/bashrc
,您可能会看到if
orcase
与 相关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
文件,然后屏幕窗口的标题不再动态更改!