如何自动将终端标题设置为目录名称而不包含路径


11

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

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

如果我有多个选项卡并排打开,这不是很有用。例如,如果我有上述dir并排打开的4个选项卡,那么我看到的只是

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

4次。

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

yesterday

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

有没有办法做到这一点?


Answers:


11

为什么要不修改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
谢谢-我还没有意识到PS1独立设置标题和提示。在我的.bashrc中,在xterm * | rxvt *)中为“ $ TERM”的情况下,我设置了PS1 =“ [\ e] 0; $ {debian_chroot:+($ debian_chroot)} \ W \ a] $ PS1”,和正是我想要的。
凝视青蛙

这个问题做了解释什么所有的PS1官样文章手段的工作:askubuntu.com/questions/404341/...
congusbongus

3

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.