在 sh 和 bash 中检查 root 用户

All*_*lan 1 freebsd bash root bourne-shell

我正在尝试编写一个脚本,在新的 FreeBSD 安装上自动安装端口/包。为此,执行脚本的用户必须是 root。

系统“应该”是处女的意思bashsudo可以安装也可以不安装;所以我试图解释它。为此,我正在检查用户 ID 是否等于 0。

问题是,在 bash 和 sh 之间,环境变量是不同的:

  • bash -> $EUID(全部大写)
  • sh -> $euid (都更低)

除了环境变量之外,还有其他方法可以检查 root 用户,还是应该根据环境调整用户的检查?

Jef*_*ler 9

我会检查 的值id -u,该值指定为:

仅输出有效用户 ID,使用格式“%u\n”。

也许像这样:

if [ $(id -u) -eq 0 ]
then
  : root
else
  : not root
fi
Run Code Online (Sandbox Code Playgroud)