Shell-Script

符合 POSIX 標準的高程檢測

  • July 17, 2022

我正在編寫一個盡可能符合 POSIX 的腳本,所以我避免使用 bashim。它需要提升某些部分的權限(root),並在必要時提示使用者 - 這需要檢查目前使用者是否為 root

有多種方法,例如檢查UIDEUIDid -u等。這些都包含在與檢測本身相關的許多問題中:$$ 1 $$,$$ 2 $$,$$ 3 $$,$$ 4 $$,$$ 5 $$等,但它們通常與 bash 相關,並且事後在評論中會出現與 posix 相關的警告。

我不知道哪些 shell 支持哪些方法。是否有一種符合 POSIX 且適用於大多數 shell 的方法?

id -uPOSIX 指定,因此任何符合 POSIX 的環境都應支持

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

作為有效根的測試。

我對 Busybox(及其ashid)的測試表明它支持上述內容,至少使用用於我的 Busybox 的編譯選項。(我想有可能建構一個不符合這些功能的 POSIX 規範的 Busybox,但是這真的超出了您的問題的範圍。)

引用自:https://unix.stackexchange.com/questions/710147