如何让 gnome-terminal 在 ssh 之后恢复其标题?

如何让 gnome-terminal 在 ssh 之后恢复其标题?

我正在运行 gnome-terminal,并设置为根据终端命令更新其自己的标题来更新其标题(Fedora 13 上的默认设置)。当我通过 SSH 连接到其他地方时,标题会正确更新,但随后 SSH 退出,gnome-terminal 指示我仍在远程登录。这在尝试导航时令人困惑。如何在登录时保持行为,并在注销时恢复旧标题(默认情况下只是“终端”,但最好显示当前位置)?

答案1

将 set-title 转义序列添加到 shell 的 rc 文件中。对于bashv4,这将是:

if [[ $TERM == xterm* ]]; then
    # This puts "user@host workdir" into the titlebar.
    # (look for section "PROMPTING" in bash's manual)
    title='\u@\h \w'

    PS1+="\[\e]0;$title\007\]"
fi

在你的~/.bashrc


除非您喜欢摆弄bash脚本,否则请不要再往下读了。

上面的代码实际上是我的~/.bashrc代码片段的一个大大简化的版本:

case $TERM in
[xkE]term*|rxvt*|cygwin)
    title_seq='\e]0;%s\007';;
screen*)
    # only set the "screen"window title
    title_seq='\ek%s\e\\';;
esac

# Very useful for: title syslog && tailf /var/log/syslog
title() { [ "$title_seq" ] && printf "$title_seq" "$*"; }

# Modify the prompt string.
if [ "$title_seq" ]; then
    title='\u@\h \w'
    PS1+="\[$(printf "${title_seq//\\/\\\\}" "$title")\]"
fi

事实上,那是我的老的 ~/.bashrc片段。我发现PROMPT_DIRTRIM=1必须将$PS1修改(最后一条if语句)替换为:

update_title() {
    title "$USER@$HOSTNAME ${PWD/#$HOME/~}"
}
PROMPT_COMMAND="update_title"

相关内容