我正在运行屏幕 -D -R(可以选择使用 -S 名称),它运行良好,但有一个问题 - 当给定的屏幕之前不存在时,我会收到通知“新屏幕......”,然后令人恼火的等待。
我该如何禁用这个特定通知?
答案1
不幸的是,此行为在源代码中是硬编码的:使用相同的测试来确定是否发出“新屏幕...”通知以及确定是否附加到正在运行的会话。(在屏幕 4.0.3 源代码中,(rflag && (rflag & 1) == 0)
在attacher.c
和screen.c
—rflag
中, 为 1,-r
为 2。-R
)
如果您愿意重新编译,修补程序很简单:删除显示消息的行screen.c
。
您可以通过输入一些内容来让消息消失。如果您不想输入将到达屏幕窗口内的应用程序的键,您可以输入C-a `
或其他未绑定的键。
一种简单的解决方法是立即分离屏幕会话(使用C-a d
或使用文件detach
中的命令screenrc
;当也指定-m
时,命令行不起作用-R
),然后再次附加到它(例如,再次运行相同的命令)。
一个非常笨拙但完全自动化的解决方法是在文件中包含以下几行,screenrc
以便最初跳过消息并在一秒钟后重新启用它们:
msgwait 0
screen -t post_initialization 39 sh -c 'sleep 1; screen -X msgwait 5'
(39 是可能的最高窗口号,它是一个编译时选项(MAXWIN
)。)
请注意,这两种解决方法都会隐藏screen
启动时选择显示的任何消息,而不仅仅是无用的“新屏幕......”消息。
答案2
我刚刚遇到了同样的问题。在最新版本的屏幕中,您可以指定-q
标志以使屏幕安静,并阻止其显示。
这来源节目
if (rflag && (rflag & 1) == 0 && !quietflag)
所以我不知道吉尔斯在哪里找到它的,或者什么时候改变它的。
答案3
好吧,我来晚了,但我遇到了同样的问题。我通过不使用 -D -R 而是使用 -S 解决了这个问题。所以$ screen -S myScreenName
。这会立即启动屏幕...
答案4
尝试将这些添加到您的.screenrc文件:
startup_message off
msgwait 1
后者将导致所有屏幕消息仅可见 1 秒 - 但在其他时候,这可能短得令人烦恼。