2011-06-15 137 views
11

我已经有了一个脚本,我想要用su特权运行,但脚本中会出现失败的有趣的脚本命令很晚,因此我想先进行一次干净的测试以确定脚本是否会失败没有SU能力。如何确定shell脚本是否以root权限运行?

对bash,sh和/或csh执行此操作的好方法是什么?

+3

您是否尝试过的http:// www.cyberciti.biz/tips/shell-root-user-check-script.html? – 2011-06-15 18:23:53

+0

这看起来不错。你为什么不把这个作为答案? :-) – 2011-06-15 18:33:17

回答

12

庆典/ SH:

#!/bin/bash 
# (Use #!/bin/sh for sh) 
if [ `id -u` = 0 ] ; then 
     echo "I AM ROOT, HEAR ME ROAR" 
fi 

CSH:

#!/bin/csh 
if (`id -u` == "0") then 
     echo "I AM ROOT, HEAR ME ROAR" 
endif 
+3

此代码在POSIX shell('/ bin/sh')中不起作用。 '[[''命令和'EUID'变量是特定于bash的 - 它们没有在POSIX规范中定义。 – 2011-06-18 07:55:44

+1

另外#!/ bin/bash几乎总是错的。如果你必须使用bash(这真的不是首选),使用/ usr/bin/env bash – 2013-05-25 15:31:28

+1

看起来bash **是**被那些在他们的问题中特别提到bash的人首选的。 – jwg 2014-03-12 16:11:18

7

你可能在你的脚本的开头添加类似的东西:

#!/bin/sh 

ROOTUID="0" 

if [ "$(id -u)" -ne "$ROOTUID" ] ; then 
    echo "This script must be executed with root privileges." 
    exit 1 
fi 
相关问题