在 Ubuntu 14.10 中,如果我打开了多个终端选项卡,我可以右键单击一个终端选项卡并重命名它。在 Ubuntu 15.04 中我找不到这个功能。
有没有简单的方法可以找回它?
这是当前版本:
$ gnome-terminal --version
GNOME Terminal 3.14.2
在 Ubuntu 14.10 中,如果我打开了多个终端选项卡,我可以右键单击一个终端选项卡并重命名它。在 Ubuntu 15.04 中我找不到这个功能。
有没有简单的方法可以找回它?
这是当前版本:
$ gnome-terminal --version
GNOME Terminal 3.14.2
柯比提出的
.bashrc
解决方案对我有用:然后根据我的提示:
$ set-title test-title
在这里回答
我引用:
我不敢相信他们删除了这样一个用户友好的功能。
我正在切换到 ROXTerm ( http://roxterm.sourceforge.net ),它可以很好地完成工作。它打包在 Ubuntu 中:
那么,就让恐龙继续它自己的路吧 ;-)
我按照上面的建议尝试了 RoxTerm,结果很好。但我在 15.04 上选择了 MATE Terminal,它是 MATE 项目的一部分,是 Gnome 2 的延续:
该终端基于 Gnome 终端代码。
评论:很难理解 Gnome Terminal 开发者的心态。那里有很多关于“如何”命名终端选项卡的讨论,以及如何做到正确。如果是这样,为什么要让用户更难命名它们呢?一点也不聪明。
现在我已经调查了一天的大部分时间,终于找到了设置这个标题的方法。它是通过以 \e]0 开头的转义序列完成的;并以 BEL 字符结尾 ( = \007 = \a)。与我上面提到的不同,从 shell 返回到终端应用程序的通信是可能的,但非常有限,通过这样的转义序列(还有更多)。
关于上面的内容:
它可以工作,但并不总是如此。
PROMPT_COMMAND
是一个变量,每次发送命令时都会执行其内容,因此它也会发送此转义序列。但是,这可以被 PS1 变量中的转义序列覆盖,它设置命令行提示符。这就是为什么上面的在这里没有效果。我从一个较旧的 Ubuntu 安装中抓取了这个,它设置了命令提示符(右侧部分,在 之后
]
)并且还发送了所需的转义序列(左侧部分,直到并包括]
):这可能会表现得更好,因为不需要
$PROMPT_COMMAND
每次都进行解释。它还有更多选项,因为 Bash 在这里有更多的转义序列,例如\u
当前用户名、\W
当前目录名或\w
当前工作目录的整个路径,可选择通过$PROMPT_DIRTRIM
. 请参阅 Bash 手册页中的章节PROMPTING
。另请注意,此处的转义序列还必须由\[
和包围\]
。要设置一个固定的标题,这是可行的:
享受!
在调查期间,我还尝试了解 gnome-terminal 源代码,这导致了 vte 源代码,其中对标题设置和读取转义序列的支持被认为是一种安全风险:参见此处(案例 20、案例 21)和此处(“窗口标题报告”)。
如上所示设置 $PROMPT_COMMAND 在这里效果为零。毫不奇怪,因为 Bash 在终端内运行,父进程(此处为:gnome-terminal)无法在类 unix 操作系统上读取子进程的环境。使用更简单的东西,比如
执行echo bla,没有其他事情发生。
编辑:必须将其包装在转义序列中,请参阅我的其他答案。尽管无法读取子环境,但可以通过这些序列与父环境进行一些通信。
在 Gnome 错误 740188 中,他们讨论了在 .bashrc 中定义一个 title() 函数。打开的每个标签页都有不同的标签页?严重丑陋的黑客攻击,如果可能的话!
Stackexchange 上的其他解释甚至都在谈论设置 $PS1(并获得投票)。抱歉,不,那不是标题,那是命令提示符。
简而言之:他们把它搞砸了,无法修复,以在首选项对话框中节省一点空间。我的天啊
现在,让开发人员恢复决定的唯一机会是引发一场严重的狗屎风暴,否则他们只会在几秒钟内关闭你的错误报告(尝试了很多很多次)。我们将如何制造这场狗屎风暴?