我有 2 台不同的服务器(都运行 Linux),通过 ssh 连接到它们。
登录后,所有终端背景看起来都一样。我想为不同的服务器设置不同的颜色主题或背景。例如,如果我 ssh 到“server-1”,我的终端背景会变成灰色,如果我登录到“server-2”,它会变成蓝色。
我怎样才能实现这个目标?
注意:我使用的是“MATE 终端”。
答案1
在 XTerm 中,您可以使用控制序列在你的 .bashrc 或类似文件中。喜欢:
if [ "${-//[!i]/}" = 'i' ]; then case $HOSTNAME in server1) echo -e '\e]11;darkgray\a\e]10;black\a' ;; server2) echo -e '\e]11;darkblue\a\e]10;gray\a' ;; esac fi
其他终端仿真器也具有类似的功能。
在 Putty 中,您可以直接配置颜色,不确定 XTerm 中的这些控制序列是否有效(它们没有经过粗略测试,但也没有查看我的设置)。
tty
检查 shell 交互标志而不是让 stdout 成为终端(即或的退出状态)的原因是在某些情况下(例如 Ansible) ,甚至可以为批处理[ -t 1 ]
分配 tty ( ),并在这种情况下输出到 stdoutssh -tt
可能会使流不“干净”,这可能会导致麻烦(例如 Ansible)。
注意:我测试了[ "${-//[!i]/}" = 'i' ]
可用于 Centos 7 的 bash、mksh、zsh 和 ksh 版本,并且它在所有版本中都有效。