目前,我的 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 前面。这不会改变您的提示外观,但会自动将您的终端选项卡标题设置为当前工作目录的基本名称。