我有一个自定义 shell 脚本,每次用户登录或假定身份时都会运行,它被放置在 /etc/profile.d 中并执行一些基本的环境变量操作。最近我添加了一些代码,这样如果屏幕正在运行,它将重新附加它,而无需我输入任何内容。不过也有一些问题。如果我以 root 身份登录,并以 su - 身份登录另一个用户,代码将再次运行。当代码第一次运行时,我可以设置一个变量来阻止代码的第二次运行吗?
我想在磁盘上写一些东西,但是如果我开始一个新的终端会话,我不想阻止代码运行。这是有问题的代码。它首先尝试重新连接 - 如果因为它已经连接(因为它可能在中断的会话中)而失败,它将“收回”会话。
screen -r
if [ -z "$STY" ]; then
exec screen -dR
fi
最终,这个错误阻止了我将用户替换为另一个用户,因为一旦我这样做,它就会抓住屏幕会话并将我放回我开始的地方。非常令人沮丧