2013-11-04 104 views
3

我已經開始學習bash腳本。我有一個概念上的疑問,如何確定腳本是以root用戶還是普通用戶身份運行?檢查bash腳本是以root用戶還是普通用戶身份運行?

我知道如果用戶是0的UID,但我不明白如何實現它。任何人都可以解釋我如何使它工作。當腳本以常規用戶身份運行時,是否可以將消息打印爲"Not a root user"

我的腳本是一個簡單的hello_world.sh

#!/bin/bash 
echo 'Hello World'; 

回答

5

POSIX殼具有內置的變量$UID$EUID。您也可以檢查id -u的退貨。在任何情況下,ID 0表示根。

#!/bin/sh 
if [ $EUID -ne 0 ]; then 
    echo "This script should be run as root." > /dev/stderr 
    exit 1 
fi 
+0

我想你想要的是$ EUID,而不是$ UID,因爲那是如何檢查腳本是否以root權限運行。 – user2719058

+0

你是對的,我編輯了我的答案。實際上,我不確定UID在這裏如何與EUID不同(或者在某些平臺上設置了shell腳本)。 – remram

+1

腳本可以由更改有效uid的父母分叉。雖然默認情況下bash會將有效的uid重置爲真實的uid,除非給出'-p'選項,所以通常'$ EUID = $ UID'成立。然而,像短劃線之類的其他shell並不實現這個功能。 – user2719058

相關問題