如何在函数内部使用PROMPT_COMMAND

时间:2018-07-26 16:51:45

标签: bash terminal centos7

我对Bash经验不足。我将在一个桌面上使用多个终端,因此认为标记终端以使我知道在哪里运行是一个好主意。

我正在运行CentOS 7,并且作为操作系统does not support的一部分的默认终端直接修改了“终端标签”,因此我一直在使用以下命令对其进行修改:

  

PROMPT_COMMAND ='echo -ne“ \ 033] 0; 标题进入此处 \ 007”’

我在互联网上找到了这段代码,此命令可以正常运行。它可以满足我的要求。但是,由于我使用多个终端,所以我认为将其放在自定义函数中并提供该文件的源代码,以便可以使用变量名可能是个好主意。

这就是我所做的。

termName(){
    PROMPT_COMMAND='echo -ne "\033]0;$1\007”’
}

我将上面的代码放入了位于我的主目录中的名为“ .aliases”的文件中,并将其作为来源。然后,我写道:

  

termName ABC

但是,什么也没发生。相反,我的终端被重命名为Terminal。有人可以指出我要去哪里了吗?

PS:我确实在.bashrc文件中放入了“ source〜/ .aliases”,所以我确实知道该文件是为我打开的每个终端提供的。

2 个答案:

答案 0 :(得分:2)

PROMPT_COMMAND只是保存应在每次显示提示时运行的代码段的变量。真正改变您的终端的代码是echo命令,这是您在termName函数中所需要的。

termName () {
    echo -ne "\033]0;$1\007"
}

稍微清晰的定义将改用printf

termName () {
  printf '\033]0;%s\007' "$1"
}

将该定义添加到标准.bashrc文件中,以确保在您启动的任何交互式bash会话中都已定义。

答案 1 :(得分:0)

也许您没有正确设置转义序列?另外,如何尝试从PROMPT_COMMAND内部修改PS1?