我在做
ssh -t host screen -D -RR
在 OS X (10.9) 终端选项卡中。
My~/.screenrc
在所有远程主机上都是相同的,并包含以下行:
hardstatus string "%H(%n:%t)$USER %h"
我的~/.bashrc
所有主机上也是相同的。
当我登录到运行的主机host_u
(Ubuntu 12.04.3 LTS
)时Screen version 4.00.03jw4 (FAU) 2-May-06
,OS X 终端上的选项卡标题是host_u(1:bash)sds ~
,正如预期的那样。
当我登录到主机host_c
(CentOS release 6.3 (Final)
)运行时Screen version 4.00.03 (FAU) 23-Oct-06
,OS X 终端上的选项卡标题是~/FooBar
(这是我运行命令的本地 OS X 目录)ssh/screen
。
问题:该hardstatus
线路不通host_c
。
附加信息:
.screenrc
:
termcapinfo xterm* ti@:te@
在和上host_c
,host_u
都是TERM
(xterm-256color
从 OS X 终端继承)。
答案1
要设置硬状态,screen 需要知道要发送到终端(模拟器)的正确转义码;它们可以通过 termcap/terminfo 找到。相关功能包括:
hs
- 如果设置,终端支持硬状态线ts
- 将光标移动到硬状态行(“开始”)fs
- 将光标移回之前的位置(“完成”)ds
- 如何清除/重置硬状态(“默认”)。
没有人再有真正的“hardstatus”行了。要使用 xterm 或其他 GUI 仿真器的标题,需要设置功能;为了避免混淆程序,它们不会在常规 termcap/terminfo 数据库中设置。您可以在那里添加它们,或者您可以在 .screenrc 中告诉 screen 如果设置了它们会是什么:
termcapinfo xterm* 'hs:ts=\E]0;:fs=\007:ds=\E]0;screen\007'
(这会设置默认标题“屏幕”,但这可能不太相关。实际的转义代码可能因您的终端仿真器而异 - 特别是,对于某些 xterm 变体,可能不需要0
in \E]0;
,或者可能需要不同的值;请检查您的终端仿真器的手册页。)
这些设置将由屏幕使用,但不能用于任何其他应用程序;例如,如果您有一个想要覆盖硬状态的编辑器,它会查找真正的 termcap,找到hs
未设置的(或系统默认值)并且知道不要这样做。