修改/etc/ssh/ssh_config (参考https://linux.die.net/man/5/ssh_config)

Host *git*  ##此次按需选择是否配置,git命令如果使用ssh协议的远端报错
    PermitLocalCommand no

Host *
    PermitLocalCommand yes
    LocalCommand echo -ne "\033]0;$(echo %r@%h)\007" 

这个命令之所以以修改终端标题,是因为它利用了终端支持的ANSI转义序列(ANSI escape codes)来与终端进行通信,指示终端执行特定操作(这里是修改窗口标题)。

让我们分解一下这个命令的工作原理:

  1. ANSI转义序列基础
    \033]0;...\007 是一个特殊的控制序列,其中:

    • \033 表示ESC字符(ASCII码27)
    • ]0; 是设置窗口标题的指令
    • ... 是要设置的标题内容
    • \007 表示 BEL字符(ASCII码7),用于结束这个控制序列
  2. 命令各部分解析

    • echo -ne-n表示不自动换行,-e表示启用反斜杠转义解析
    • "\033]0;$(echo %r@%h)\007":这是要输出的内容
    • $(echo %r@%h):这部分会被替换为实际的标题文本(%r%h可能是某些环境中的变量,通常表示用户名和主机名)
  3. 终端如何响应
    当终端接收到这个特殊序列时,它不会将其显示为普通文本,而是会执行其中指定的操作——将窗口标题设置为%r@%h所代表的内容。

不同终端可能对这类控制序列有略微不同的实现,但\033]0;标题\007是设置窗口标题的一种广泛兼容的方式,在大多数现代终端(如xterm、gnome-terminal、iTerm2等)中都能正常工作。