每当我键入命令时,GNU 屏幕选项卡都会重命名

low*_*min 6 command-line gnu-screen window-title

当我使用 gnu screen 时,在其他选项卡中,我 ssh 到其他机器,相应地重命名选项卡,并正常工作。标签名称不变。

在一个新的选项卡中,它只是原始机器上的一个终端,每当我键入任何命令时,该选项卡都会重命名为当前工作目录。

例子:

///////////这里是所有东西预先的样子

    [me@mac ~]$
    [ me ][0*$ me@mac:~  1-$ web01  2$ dev03
Run Code Online (Sandbox Code Playgroud)

////////// 设置选项卡名称

    [me@mac ~]$ 
    Set window's title to: test
    [ me ][0*$ test  1-$ web01 clone  2$ dev03 clone
Run Code Online (Sandbox Code Playgroud)

/////// 输入命令: pwd

    [me@mac ~]$ pwd
    /home/me
    [me@mac ~]$
    [ me ][0*$ me@mac:~  1-$ web01 clone  2$ dev03 clone
Run Code Online (Sandbox Code Playgroud)

并且该选项卡被重命名回当前的工作目录。在我通过 ssh 连接到另一台机器的任何选项卡中都不会发生这种情况。所以我认为这可能是我个人设置的问题,但我的 .bashrc、.bash_profile 或 .screenrc 文件中似乎没有任何与标题有关的内容。

Gil*_*il' 3

您的 shell 配置正在将终端标题设置为当前正在运行的命令。这是一个相当常见的配置。由于它是由 shell 完成的,因此如果 shell 在具有不同 shell 配置的另一台计算机上运行,​​则不会完成该操作。设置屏幕窗口标题的转义序列是转义字符(字节值 27)。\xe2\x90\x9bkTITLE\xe2\x90\x9b\\\xe2\x90\x9b

\n\n

在 bash 中,查找发出此转义序列的代码。转义字符可能表示为\\e\\033。该代码可以位于提示符 ( PS1) 中,也可以位于运行命令 ( PROMPT_COMMAND) 后显示新提示符之前执行的命令中。检查它们的值(注意不要将转义序列发送到终端,以防它们包含文字转义字符):

\n\n
printf \'PS1=%s\\nPROMPT_COMMAND=%s\\n\' "$PS1" "$PROMPT_COMMAND" | cat -v\n
Run Code Online (Sandbox Code Playgroud)\n\n

也可以在运行命令之前通过DEBUG陷阱发出此转义序列,但不太常见:

\n\n
trap -p DEBUG\n
Run Code Online (Sandbox Code Playgroud)\n\n

这些变量(或陷阱)必须在 bash 配置中设置,无论是您的配置还是系统范围的配置:通常是 ,~/.bashrc/etc/bash.bashrc某些系统上,但也可能~/.bash_profile是 、~/.profile/etc/profile~/.bash_login,或者其中之一包含的文件。您可以通过运行具有较少设置的新 shell 来缩小范围:

\n\n
env -i bash                  # no environment variables or per-user settings\nenv -i HOME="$HOME" bash     # no environment variables, normal interactive shell\nenv -i HOME="$HOME" bash -l  # no environment variables, login shell\nHOME=/none bash              # skips your per-user settings\n
Run Code Online (Sandbox Code Playgroud)\n\n

比较哪些显示问题将告诉您这些设置是来自您的设置还是系统范围的设置,以及它们是来自.bashrc(由交互式 shell 读取)还是来自登录时文件(.profile等) 。

\n