Bash
在 sh 和 bash 中檢查 root 使用者
我正在嘗試編寫一個腳本,在新的 FreeBSD 安裝上自動安裝埠/包。為此,執行腳本的使用者必須是 root。
該系統被“假定”為處女的意思
bash
,sudo
可能安裝也可能不安裝;所以我試圖解釋它。為此,我正在檢查使用者 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
,這可能是檢查腳本是否作為特權使用者。