在 RHEL6 和 CentOS 6 上,在此处/etc/bashrc
设置PROMPT_COMMAND
:
case $TERM in
xterm*)
if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
else
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'
fi
;;
screen)
if [ -e /etc/sysconfig/bash-prompt-screen ]; then
PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"'
fi
据我所知,所有这些选项都是隐形打印的。这有什么用呢?
我知道这PROMPT_COMMAND
是在显示提示之前执行的(PS1
通常)。我不明白为什么回显不可见的东西有任何用处。
答案1
\033
是(转义)字符的八进制代码Esc
,这是一个很好的提示,表明您的回显字符串PROMPT_COMMAND
是终端控制序列。示例中的两个序列看起来都将终端标题设置为user@host:pwd
。
第一种情况,xterm*
设置窗口名称和图标标题。有关详细说明,请查看列表xterm 控制序列并向下滚动直到找到OSC P s; Pt;英石在下面操作系统控制(OSC 是ESC ]
,ST 是ESC \
)。
第二种情况是针对screen
终端仿真器,在屏幕控制序列,它解释了ESC _
设置屏幕的硬状态(简单地说,这是屏幕窗口的标题)。