2013-11-04 75 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

相关问题