当您打开新 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。(您也可以在那里设置)