4

我有一个自定义 shell 脚本,每次用户登录或假定身份时都会运行,它被放置在 /etc/profile.d 中并执行一些基本的环境变量操作。最近我添加了一些代码,这样如果屏幕正在运行,它将重新附加它,而无需我输入任何内容。不过也有一些问题。如果我以 root 身份登录,并以 su - 身份登录另一个用户,代码将再次运行。当代码第一次运行时,我可以设置一个变量来阻止代码的第二次运行吗?

我想在磁盘上写一些东西,但是如果我开始一个新的终端会话,我不想阻止代码运行。这是有问题的代码。它首先尝试重新连接 - 如果因为它已经连接(因为它可能在中断的会话中)而失败,它将“收回”会话。

screen -r

if [ -z "$STY" ]; then
    exec screen -dR
fi

最终,这个错误阻止了我将用户替换为另一个用户,因为一旦我这样做,它就会抓住屏幕会话并将我放回我开始的地方。非常令人沮丧

4

2 回答 2

1

su 时获得的 shell 的 ${PPID} 将是 su 命令。所以输出

ps -o 命令= $PPID

将以字母开头su,因此对此进行测试。

于 2010-05-28T14:28:34.067 回答
0

我认为如果您阅读以下帖子(以及您最喜欢的外壳的人) 关于登录与个人资料的问题,您就可以做到这一点

于 2010-03-13T18:35:33.723 回答