![退出后 Bash 窗口标题未恢复](https://linux22.com/image/1340182/%E9%80%80%E5%87%BA%E5%90%8E%20Bash%20%E7%AA%97%E5%8F%A3%E6%A0%87%E9%A2%98%E6%9C%AA%E6%81%A2%E5%A4%8D.png)
我在 OS X 上的终端窗口中遇到了窗口标题问题:
- 启动终端。窗口标题是“bash”
- 输入“ssh external”连接外部服务器。窗口标题为“user@external:~”
- 输入“exit”。我现在回到了本地机器,但窗口标题仍然显示“user@external:~”。
我如何让窗口标题返回到“bash”,我认为这是正确的,因为我已经退出外部服务器并返回到本地机器?
我的 ~/.bash_profile 具有相同的 PS1 值:
导出 PS1='\w$'
答案1
您可以通过向终端回显专门构造的字符串来定义标题。
你可以定义:
function update_title {
echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007" ;
}
然后使用:
update_title
每次您想要更新它时。
如果你希望它“一直”更新,你可以使用 shell 对“在显示提示之前”功能的支持。例如,在(相当新的) bash 中:
export PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'
但我发现这有点过头了:它重新设置了之前的标题每一个提示,而不仅仅是在需要时......
答案2
这是一个函数,它可以将标题设置为您提供的任何字符串,或者如果您不提供标题,则设置为主机名和当前目录。我将其称为“xst”,即“xterm set title”。
xst ()
{
if [ $# -eq 0 ]; then
echo -e "\x1b]0;${HOSTNAME}:${PWD}\x07";
else
echo -e "\x1b]0;$*\x07";
fi
}