如何让终结者在标题栏中显示远程主机名?

如何让终结者在标题栏中显示远程主机名?

当我通过 SSH 连接到任何一台 Linux 设备时,Terminator 上的标题栏显示 user@hostname,其中主机名是我正在 SSH 连接的计算机,而不是我通过 SSH 连接的计算机进入(即标题栏从本地设备而不是远程设备镜像 $PS1)。如果我同时通过 SSH 连接到所有 4 台计算机并且看不到它们的提示(因为它们所有的标题栏都是相同的!),这会变得非常混乱。

如何让终结者显示正确的主机名?

答案1

虽然用户当然可以自定义他们的提示(并使其更新终端的标题),但大多数使用默认的 shell 行为。

听起来好像您的本地计算机将标题字符串设置为提示的副作用,并且远程计算机没有更改标题。

鉴于此,您可以在不受远程计算机干扰的情况下更新标题,例如,使用包装脚本,如下ssh所示:

#!/bin/bash
# trim parameters, leaving just the last (user@hostname or just hostname)
title=$(echo "$*" | sed -e 's/^.* //')
printf '\033]0;%s\007' "$title"
/usr/bin/ssh "$@"

并将其放在可执行路径之前/usr/bin,您可以调用“ssh”并让它在您访问每台远程计算机时设置您的标题字符串。退出 ssh 后,本地提示会将标题字符串重置回本地计算机。

在后续评论中,OP 指出连接是针对 IP 地址进行的。如果远程机器主机名,那么使用该主机名将使过程更加清晰,或者(如果不在 DNS 中)将主机名收集到本地计算机的/etc/hosts.最终,DNS 是必经之路......

以供参考:

相关内容