使用 GNU screen 作为登录“shell”

使用 GNU screen 作为登录“shell”

当您打开新 shell 时让屏幕自动运行的最佳方法是什么(无论是通过登录、xterm 还是其他任何方式)?

我看到最常见的建议是将exec screen其放入常规 shell 的 rc 或登录/配置文件中,但对于 tcsh 等,登录 shell 最后运行 .login,而非登录 shell 最后读取 .cshrc。如果我放入exec screen.cshrc,登录 shell 将不会获取 .login 文件,如果我将其放入 .login,非登录 shell 将不会运行 screen。我认为其他 shell 也存在类似的问题。

答案1

一种方法是:

# if $STY is not set...
if [ -z "$STY" ]; then
    exec screen -ARR
fi

请注意,这是为 编写的bash,但对于 也应该类似csh。将其放入.cshrc以执行 。全部贝壳。


另一种方法:你可以简单地设置screen为你的登录 shell本身/etc/passwd,并将此行放入您的~/.screenrc:(当然,修复路径。)

defshell /bin/csh

但这可能会破坏运行/etc/passwd为各种命令定义的登录 shell 的程序。

编辑:不要忘记添加屏幕到/etc/shells

答案2

这是一个老问题,但通过谷歌搜索同样的东西让我来到这里,所以这里是给任何偶然发现这个页面的人的答复。

到目前为止我发现的最好的东西是屏风如果您的发行版有它。带有在登录时运行的选项,并可同时控制多个屏幕。

您可以在一个位置分离并注销,然后在另一个位置登录到同一会话。

我发现 screen 非常适合用于运行服务器进程,但是 byobu 非常适合用于日常事务。

答案3

我通常在 ~/.screenrc 中执行此操作

defshell -bash  # the dash makes it a login shell

答案4

如何使用 chsh:

chsh /usr/bin/screen

这会在 /etc/passwd 中设置默认登录 shell。(您也可以在那里设置)

相关内容