符合 POSIX 标准的高程检测

符合 POSIX 标准的高程检测

我正在编写一个应尽可能兼容 POSIX 的脚本,因此我避免使用 bashim。它需要对某些部分提升权限(root),并在必要时提示用户 - 这需要检查当前用户是否为root

有多种方法,例如检查UIDEUIDid -u等。与检测本身相关的许多问题都涵盖了这些方法:[1],[2],[3],[4],[5]等等,但它们通常与 bash 相关,并且事后在注释中有与 posix 相关的警告。

我不知道哪些 shell 支持哪些方法。是否有一种符合 POSIX 标准并且适用于大多数 shell 的方法?

答案1

id -u由 POSIX 指定,因此任何符合 POSIX 标准的环境都应该支持

[ "$(id -u)" = 0 ]

作为有效根的测试。

我对 Busybox(及其ashid)的测试表明它支持上述内容,至少支持我的 Busybox 使用的编译选项。 (我想可以构建一个不符合这些功能的 POSIX 规范的 Busybox,但这样就超出了您的问题范围。)

相关内容