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

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

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

如果我有多个标签并排打开,这不是很有用。 例如,如果上面的dir有4个标签并排打开,我看到的就是

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

4次。

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

 yesterday 

显然,当我更改目录时,标题应该会改变。 我想这样做而不改变我的提示,所以提示和终端标题应该是不同的。

有没有办法做到这一点?

为什么要在不修改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\]\$ "

…并用\W替换\u@\h: \w

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

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

…但是你会经常打击bash以阻止它使用PS1(最好的方式)。

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