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