退出后 Bash 窗口标题未恢复

退出后 Bash 窗口标题未恢复

我在 OS X 上的终端窗口中遇到了窗口标题问题:

  1. 启动终端。窗口标题是“bash”
  2. 输入“ssh external”连接外部服务器。窗口标题为“user@external:~”
  3. 输入“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
}

相关内容