如何自动将终端标题设置为没有路径的目录名称

如何自动将终端标题设置为没有路径的目录名称

目前,我的 bash 终端/选项卡标题是根据我所在的目录设置的。例如:

bob@bobscomputer:~/i/had/some/great/pie/yesterday

如果我同时打开多个标签页,这个功能就没什么用了。例如,如果我同时打开了上述目录的 4 个标签页,我所看到的就只有

bob@bobscomputer:~/i/had...

4次。

我希望所有终端标题都自动设置为路径的最后一部分。在上面的例子中,我希望标题为

yesterday

显然,当我更改目录时,标题应该会更改。我想在不更改提示符的情况下执行此操作,因此提示符和终端标题应该不同。

有没有办法做到这一点?

答案1

为什么不修改 PS1 变量呢?那才是正确的做法。

如果你运行以下命令,你将获得你想要的结果:

export PS1="\[\e]0;\W\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

这只是采用默认提示:

export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "

...并替换\u@\h: \w\W

您可以使用任何回显正确转义代码的命令执行相同的操作:

echo -en "\e]0;${PWD##*/}\a"

...但是然后你将不断地与 bash 斗争以阻止它使用 PS1 执行此操作(最好的方法)。

答案2

是的。将:添加\[\e]0;\W\a\]到您的 PS1 前面。这不会改变您的提示外观,但会自动将您的终端选项卡标题设置为当前工作目录的基本名称。

相关内容