我正在尝试使用以下形式的命令来编写 GNU/screen 窗口的生成脚本screen <CMD>
。
由于某种原因,当我手动启动 GNU/screen 时,它在窗口 0 ( /bin/bash
) 中启动的 shell 不包含$STY
环境变量。如果没有此命令,例如screen vim
start a嵌套屏幕会话,而不是我想要的另一个窗口。
我的环境有些不寻常。下面是我最终的情况:
ssh robm@somehost
sudo su sharedaccount
script /dev/null
screen
此script /dev/null
步骤存在的原因在于分配给用户的 TTY 设备robm
无法被用户访问sharedaccount
。该script
命令会分配一个由调用它的用户拥有的新 TTY,从而解决该问题。
如果我跳过sudo
和script
步骤,GNU/screen$STY
就可以正常设置。换句话说,这可以正常工作:
ssh robm@somehost
screen
大概是sudo
和script
有某些东西干扰了screen
,但我不知道是什么。
答案1
啊,这是sharedaccount
SHELL 初始化脚本的错。它调用exec env -i ...
来创建一个新的 shell,而不包含原始用户环境中的垃圾内容。
如果我浪费了你们的时间,我很抱歉。
答案2
我认为,如果您通过将调用更改为 ,并在调用时加上破折号,例如: ,则可以跳过此script /dev/null
步骤并解决问题。这将设置您的所有环境变量,就像您实际以 身份登录时一样。su
sudo su - sharedaccount
sharedaccount