Shell-Script
符合 POSIX 標準的高程檢測
我正在編寫一個盡可能符合 POSIX 的腳本,所以我避免使用 bashim。它需要提升某些部分的權限(root),並在必要時提示使用者 - 這需要檢查目前使用者是否為 root。
有多種方法,例如檢查
UID
、EUID
、id -u
等。這些都包含在與檢測本身相關的許多問題中:$$ 1 $$,$$ 2 $$,$$ 3 $$,$$ 4 $$,$$ 5 $$等,但它們通常與 bash 相關,並且事後在評論中會出現與 posix 相關的警告。我不知道哪些 shell 支持哪些方法。是否有一種符合 POSIX 且適用於大多數 shell 的方法?
id -u
由POSIX 指定,因此任何符合 POSIX 的環境都應支持[ "$(id -u)" = 0 ]
作為有效根的測試。
我對 Busybox(及其
ash
和id
)的測試表明它支持上述內容,至少使用用於我的 Busybox 的編譯選項。(我想有可能建構一個不符合這些功能的 POSIX 規範的 Busybox,但是這真的超出了您的問題的範圍。)