我正在尝试编写一个脚本,在新的 FreeBSD 安装上自动安装 ports/packages。为此,执行脚本的用户必须是 root。
该系统“应该”是处女的意思bash
,sudo
可能会也可能不会安装;所以我正在尝试解释它。为此,我检查用户 ID 是否等于 0。
问题是,bash 和 sh 之间的环境变量不同:
- bash -> $EUID (全部大写)
- sh -> $euid (全部较低)
除了环境变量之外,是否还有其他方法来检查 root 用户,或者我应该根据环境调整对用户的检查?
答案1
我会检查的值id -u
,指定为:
仅输出有效用户 ID,使用格式“%u\n”。
也许是这样的:
if [ $(id -u) -eq 0 ]
then
: root
else
: not root
fi
答案2
看起来您可以简单地$UID == 0
在两个 shell 中进行测试。由于名称root
不是重要的部分,并且您实际上可以拥有一个root
以非零 UID 命名的用户,或者一个以 以外的名称命名的 UID 0 帐户root
,这可能是检查脚本是否作为一个用户运行的更好方法。特权用户。