暗无天日

=============>DarkSun的个人博客

如何修改新版gnome-terminal的标题

今天有位朋友询问如何修改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"
}