今天有位朋友询问如何修改 gnome-panel 上的标题,找了一下网上的资料,发现都是说通过修改 PROMPT_COMMAND,将它的值设置成 ehco -ne \"\033]0;标题名称 \007\" 这样来实现的。
然而这个方法在新版的 gnome-terminal 中已经无效了。
不过经过尝试,,发现直接在 shell 中执行 ehco -ne "\033]0;标题名称 \007";read 是有效果的,只不过按下回车之后又回复了原标题。
然后继续测试将 PROMPT_COMMAND 设置为 echo "COMMAND DONE",发现每次执行完命令之后,确实都会显示 COMMAND DONE,这说明 PROMPT_COMMAND 的机制是生效的。
考虑到 PROMPT_COMMAND 是在显示 PS1 和 PS2 之前执行的,怀疑是 PS1 或 PS2 覆盖了原修改标题的效果。
尝试将 PS1 设置成 "",发现这一次通过修改 PROMPT_COMMAND 的方式能够成功地修改标题了,因此可以确认是 PS1 覆盖了原修改标题的效果。
知道原因后,要防止修改标题的效果被 PS1 覆盖就很简单了,我们直接在 PS1 后面添加内容 \033]0;标题名称 \007 就行了。
也可以编写一个简单的函数来实现这一功能:
function set_title(){
ORIGN_PS1=${ORIGN_PS1:-$PS1}
export PS1="$ORIGN_PS1\033]0;$*\007"
}
