如何让GNU Screen在登录时自动启动?

5
我每天都要处理几台Linux服务器,并且在每台服务器上都有一个GNU screen会话来保存工作进度。问题是,我每次登录都很烦恼要发出“screen -Rd work”命令,有没有什么方法可以摆脱这个问题?或者有没有任何解决办法?

阅读@Sami的答案后,我对$STY shell变量进行了一些搜索,并发现了以下内容:

STY:备用套接字名称。如果调用screen并设置环境变量STY,则它仅在运行中的screen会话中创建一个窗口,而不是启动新会话。

因此,我认为关键是$STY变量,我们可以将其附加到.bashrc或.profile中,只要在登录时执行即可。感谢@Sami

2个回答

9

这取决于您所使用的shell。如果您使用任何Bourne Shell派生版(即Bash)或Bourne Shell本身,请在~/.profile中放置适当的命令:

[ -z "$STY" ] && screen -Rd "work"

如果您尚未在screen会话中运行(screen设置环境变量STY),则此命令将启动一个新的screen会话。

如果您不使用Bash或兼容的shell,请使用适当的shell初始化文件进行类似的测试。


太好了,它可以工作。谢谢你。我确实使用bash,我尝试在.bashrc中添加类似的内容,但失败了。应该将其添加到.profile中。 - adamsmith
~/.bashrc 只在登录 shell 中被调用,因此例如 xterm 会话可能不是登录 shell。我通常只是将 ~/.bashrc 符号链接到 ~/.bash_profile,但您可能希望保持事情分开。 - user2845360
如果您使用"su - username"命令,程序将无法工作,STY变量为空。 - brammator

1
您可以在登录脚本中设置一个别名:

alias s="screen -Rd work"

然后您只需要输入这个。
s

加油,这绝对不是粗鲁的,如果理解为原意,它可以是建设性的:是的,好吧,即使他的措辞没有明确禁止这个答案,但这显然不是OP所寻找的。我从未想过要恶意评论这个答案;我只是想说我认为这个答案一点也不有用。 - Alfe
这不会在启动时启动GNU screen会话。相反,它只是使调用screen更容易。 - Andy Zhang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接