如何将选项卡名称设置为我连接到的远程主机的别名主机名?

如何将选项卡名称设置为我连接到的远程主机的别名主机名?

您可能知道,默认情况下,AWS 实例的主机名类似于ip-12-34-56-78.us-west-2.compute.internal,因此当我 ssh 到该主机时,选项卡名称会更改为root@ip-12-34-56-78(对我来说有点难以识别哪个是哪个)。

因为我有以下内容~/.ssh/config

Host mail.domain.com
    Hostname 1.2.3.4
    User root

Host web.domain.com
    Hostname 5.6.7.8
    User root

我想知道是否有任何方法可以将选项卡名称更改为我连接到的远程主机的“别名”主机名(而不是“真实”主机名):

ssh 时的 iTerm 选项卡标题


我当前的PS1设置:

PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '

我尝试将 ssh 包装器添加到~/.bashrc

ssh() {
    echo -ne "\033]0;${@: -1}\007"
    exec ssh $@
}

然后. ~/.bashrc通过运行进行测试ssh web.domain.com

  • 尽管连接:选项卡名称更改为web.domain.com,如预期
  • 什么时候连接的: 它被覆盖root@ip-5-6-7-8

为什么?有什么与PS1这里相关的吗?


更新 6 月 6 日星期五 21:58:04 ICT 2014

发生了一些非常奇怪的事情:看起来这只发生在 AWS 实例上。对于其他主机,登录后选项卡名称仍然保留。

PS1在AWS实例上:

# echo $PS1
[\u@\h \W]\$

PS1在其他主机上:

~ echo $PS1
\[\]\[\][\[\]\t\[\]] \u\[\]@\[\]\h\[\]\[\]:\[\]\w\[\] \[\]

我还尝试将PS1AWS 上的变量设置为工作主机的值,但没有帮助。

答案1

这应该是因为登录到远程 shell 会话后,该服务器的 PS1 会向您发送回相同的\033]0;title\007命令序列,这会使您的终端程序拦截并相应地显示。在本地工作站上编辑 PS1 确实没有任何效果。

我有类似的要求,我所做的是在远程 shell 的 bashrc 上,我输入了类似以下内容

PS1="\033]0;(tools)\007\015[\u@\h \W]# "

这些工具是我想用来识别标题的指定名称。实际上,标题在终端中正确显示了它,并且命令提示符是我通常使用的。

相关内容