当我通过 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 是必经之路......
以供参考:
- 操作系统控制(XTerm 控制序列)
- 6.3. Xterm 标题栏操作(Bash 提示 HOWTO)