目前发布的答案均不起作用或无法回答问题。
根据我最初的问题,无论设置PS1
还是效果都PROMPT_COMMAND
没有任何效果。
仅使用命令提示符下的命令,如何更改当前终端选项卡的标题?
许多帖子都提出了这样的建议:
echo -en "\033]0;New terminal title\a"
但它什么也不做。
当前的答案都不起作用(有些没有回答问题),因此为了清楚起见:
- 一旦标题改变,我不希望它在我改变目录等时改变
- 我不想要相同的所有选项卡上的标题。我只想设置运行命令的选项卡的标题
- 我想要多个标签,每个标签都有不同的标题
此外,PROMPT_COMMAND
我的终端会话中未设置该变量。如果我设置它:
PROMPT_COMMAND='echo -en "\033]0;New terminal title\a"'
它没有效果。
正确的命令是什么?
仅供参考,的输出uname -a
是:
Linux d136172 3.13.0-45-generic #74-Ubuntu SMP 2015 年 1 月 13 日星期二 19:36:28 UTC x86_64 x86_64 x86_64 GNU/Linux
答案1
来自@Maythux,这个可以满足我的需求,忽略终端上的自动提示当前目录。
PROMPT_COMMAND='echo -en "\033]0;New terminal title\a"'
操作说明
将“新终端名称”上的字符串更改为$("pwd")
:
PROMPT_COMMAND='echo -en "\033]0; $("pwd") \a"'
即使您添加新标签,这也会自动更改标题。
我使用下面的设置看起来更好,您还可以玩 bash 编程并设置自己的。
PROMPT_COMMAND='echo -en "\033]0;$(whoami)@$(hostname)|$(pwd|cut -d "/" -f 4-100)\a"'
将此设置添加到您的~/.bashrc
。
答案2
从https://askubuntu.com/a/774543/455406,bash 特有的解决方案是创建一个自定义函数(参见例如本指南) 喜欢
# function to set terminal title
function set-title() {
if [[ -z "$ORIG" ]]; then
ORIG=$PS1
fi
TITLE="\[\e]2;$*\a\]"
PS1=${ORIG}${TITLE}
}
它允许你调用set-title <name you want to set it to>
答案3
很可能已PROMPT_COMMAND
设置,每次显示提示时它都会覆盖您选择的标题。请尝试取消设置,然后发出您的标题命令:
PROMPT_COMMAND=
echo -en "\033]0;New terminal title\a"
答案4
这个线程可能有点旧,但是这里有一个对我有用的解决方案:
https://blog.programster.org/ubuntu-16-04-set-terminal-title
只需编辑您的 $HOME/.bashrc 文件并添加以下函数:
set-title(){
ORIG=$PS1
TITLE="\e]2;$@\a"
PS1=${ORIG}${TITLE}
}现在,无论何时您想要设置终端的标题,只需输入类似以下内容:
set-title“my awesome terminal title”