修改/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)来与终端进行通信,指示终端执行特定操作(这里是修改窗口标题)。
让我们分解一下这个命令的工作原理:
-
ANSI转义序列基础:
\033]0;...\007是一个特殊的控制序列,其中:\033表示ESC字符(ASCII码27)]0;是设置窗口标题的指令...是要设置的标题内容\007表示 BEL字符(ASCII码7),用于结束这个控制序列
-
命令各部分解析:
echo -ne:-n表示不自动换行,-e表示启用反斜杠转义解析"\033]0;$(echo %r@%h)\007":这是要输出的内容$(echo %r@%h):这部分会被替换为实际的标题文本(%r和%h可能是某些环境中的变量,通常表示用户名和主机名)
-
终端如何响应:
当终端接收到这个特殊序列时,它不会将其显示为普通文本,而是会执行其中指定的操作——将窗口标题设置为%r@%h所代表的内容。
不同终端可能对这类控制序列有略微不同的实现,但\033]0;标题\007是设置窗口标题的一种广泛兼容的方式,在大多数现代终端(如xterm、gnome-terminal、iTerm2等)中都能正常工作。