在终端标题中显示当前 TTY/PTY

在终端标题中显示当前 TTY/PTY

我试图弄清楚如何通过自定义我的.bashrc文件使当前 TTY 会话出现在当前终端窗口标题栏中,但我似乎在使其正常工作时遇到了一些麻烦。

我尝试这样做;

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h \w\a | $(tty | cut -d/ -f3,4)\]$PS1"

但当我这样做时并没有给出预期的结果。相反,它就像;

| pts/0user@hostname ~$

在打开的终端屏幕中而不是像这样在标题栏中;

user@host ~ | pty/0

在我的.bashrc文件中它看起来像这样

case "$TERM" in
xterm*|rxvt*)
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h \w\a | $(tty | cut -d/ -f3,4)\]$PS1"
    ;;
*)
    ;;
esac
  • -

以此解决。

PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h \w | $(tty | cut -d/ -f3,4)\a\]$PS1"

感谢@Gilles 在他们的帖子中指出了这一点,这使得需要做什么更加清楚。

答案1

要设置窗口标题,请发出转义序列 \e]2;TITLE\a其中\e\a分别是转义字符和响铃字符。由于您是在 bash 提示符内执行此操作,因此转义序列必须位于其中,\[…\]以告诉 bash 这不会在终端内产生任何输出。

您可以使用参数扩展截断前缀/dev/,并tty一劳永逸地调用,因为它不会改变。

TTY=$(tty)
PS1="\\[\\e[2;${TTY#/dev/}\\a\\]$PS1"

相关内容