Bash

在 sh 和 bash 中檢查 root 使用者

  • March 5, 2018

我正在嘗試編寫一個腳本,在新的 FreeBSD 安裝上自動安裝埠/包。為此,執行腳本的使用者必須是 root。

該系統被“假定”為處女的意思bashsudo可能安裝也可能不安裝;所以我試圖解釋它。為此,我正在檢查使用者 ID 是否等於 0。

問題是,在 bash 和 sh 之間,環境變數是不同的:

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

除了環境變數之外,還有其他方法可以檢查 root 使用者,還是我應該根據環境調整對使用者的檢查?

我會檢查 的值id -u,它被指定為:

僅輸出有效使用者 ID,使用格式“%u\n”。

或許是這樣的:

if [ $(id -u) -eq 0 ]
then
 : root
else
 : not root
fi

看起來您可以簡單地$UID == 0在兩個 shell 中進行測試。由於名稱root不是重要部分,並且您實際上可以使用root非零 UID 命名使用者,或者使用 UID 0 命名的其他帳戶root,這可能是檢查腳本是否作為特權使用者。

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