Sam*_*man 2 gnome-terminal title-bar
我正在运行 gnome-terminal set 以根据更新自己标题的终端命令更新其标题(Fedora 13 上的默认设置)。当我通过 SSH 连接到其他地方时,标题已正确更新,但随后 SSH 退出并且 gnome-terminal 指示我仍在远程登录。这在尝试导航时令人困惑。如何在登录时保持行为,并在注销时恢复旧标题(默认情况下只是“终端”,但更好的是显示当前位置)?
将 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
Run Code Online (Sandbox Code Playgroud)
在您的~/.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
Run Code Online (Sandbox Code Playgroud)
实际上,那是我的旧 ~/.bashrc片段。发现后,PROMPT_DIRTRIM=1我必须将$PS1修改(最后一条if语句)替换为:
update_title() {
title "$USER@$HOSTNAME ${PWD/#$HOME/~}"
}
PROMPT_COMMAND="update_title"
Run Code Online (Sandbox Code Playgroud)