我在通过 SSH 访问的远程系统上使用 screen(有问题的命名终端会话管理器)来运行长时间运行的进程等。我最终开始使用命令直接附加到 screen 会话,而不是首先通过 SSH 登录,然后启动 screen:
ssh -t hostname screen -xRR
的用途-xRR
是附加到现有的屏幕会话(如果可用),否则只需创建一个新会话。问题是,当创建新会话时,它不会被创建为登录 shell:
$ shopt -q login_shell; echo $?
1
因此,.profile
与首先使用 SSH 登录然后运行相比,登录会话设置(运行和朋友)未完成,然后部分设置丢失screen
- 在这种情况下,SSH 启动的 shell 是一个登录 shell,它设置正确,屏幕我猜继承了环境。
我尝试使用-l
屏幕上的标志,该标志被记录为“登录模式”,但它没有帮助 - 我认为它只会更新诸如who
.
知道如何让屏幕运行登录 shell 吗?
来自 GNU 的手册页
screen
:...
所以你有两个选择:
运行以下命令以确保作为
bash
登录 shell 启动:如果您希望此行为成为默认行为,请将以下行添加到
$HOME/.screenrc
目标主机(或运行screen
命令的任何位置)上的文件中: