bash 查找最初在 su sudo 之前启动脚本的用户

use*_*100 0 linux bash shell sudo su

我有一个 bash shell 脚本,必须以 root 身份运行。如果用户启动它,系统会要求他们输入 root 密码,并且脚本会在子 shell 中重新运行。./$0 &

假设名为“John”的用户启动该脚本。在他提供 root 密码后,脚本将以 root 身份重新运行,但我如何才能知道谁最初从脚本本身启动了该脚本(John)?目前,我正在使用原始启动器转储一个文件,稍后我可以参考该文件,但这很丑陋。

我考虑的其他选项是使用进程列表,但同样,必须有一个更优雅的解决方案。

GNU bash,版本 4.2.45(2)-release (x86_64-slackware-linux-gnu)

arc*_*444 6

您可以使用该$SUDO_USER变量。

#!/bin/bash

echo $SUDO_USER
Run Code Online (Sandbox Code Playgroud)

输出

[use1r@host]$ ./sudo-print.sh

[user1@host]$ sudo ./sudo-print.sh
user1
Run Code Online (Sandbox Code Playgroud)