Allan Asked: 2018-03-06 06:43:21 +0800 CST2018-03-06 06:43:21 +0800 CST 2018-03-06 06:43:21 +0800 CST 在 sh 和 bash 中检查 root 用户 [重复] 772 我正在尝试编写一个脚本,在新的 FreeBSD 安装上自动安装端口/包。为此,执行脚本的用户必须是 root。 该系统被“假定”为处女的意思bash,sudo可能安装也可能不安装;所以我试图解释它。为此,我正在检查用户 ID 是否等于 0。 问题是,在 bash 和 sh 之间,环境变量是不同的: bash -> $EUID(全部大写) sh -> $euid(全部更低) 除了环境变量之外,还有其他方法可以检查 root 用户,还是我应该根据环境调整对用户的检查? bash freebsd 2 个回答 Voted Best Answer Jeff Schaller 2018-03-06T06:53:46+08:002018-03-06T06:53:46+08:00 我会检查 的值id -u,它被指定为: 仅输出有效用户 ID,使用格式“%u\n”。 或许是这样的: if [ $(id -u) -eq 0 ] then : root else : not root fi John 2018-03-06T06:46:21+08:002018-03-06T06:46:21+08:00 看起来您可以简单地$UID == 0在两个 shell 中进行测试。由于名称root不是重要部分,并且您实际上可以使用root非零 UID 命名用户,或者使用 UID 0 命名的其他帐户root,这可能是检查脚本是否作为特权用户。
我会检查 的值
id -u
,它被指定为:或许是这样的:
看起来您可以简单地
$UID == 0
在两个 shell 中进行测试。由于名称root
不是重要部分,并且您实际上可以使用root
非零 UID 命名用户,或者使用 UID 0 命名的其他帐户root
,这可能是检查脚本是否作为特权用户。