我在Ubuntu下写了个Shell,想要根据登录用户不同判断是否有执行某操作的权限。基本代码如下:
-
# !/bin/bash
-
ROOT_UID=0
-
if [ "$UID" -ne "$ROOT_UID" ]
-
then
-
echo "cannot execute this script."
-
exit 1
-
fi
-
......
当我使用sh xxx.sh执行时,报第三行存在无效数字。但给予脚本执行权限使用./xxx.sh却是正常的。
当时很迷惑,难道这两个执行方式有区别。
无意中,查看sh命令,发现他是指向Ubuntu的dash的链接,而不是bash。然后执行dash,再执行echo $UID发现确实是空的。问题原因找到。原来是在dash下没有UID环境变量。
看来各种shell的解释器还是有很大不同的。
特别记录下来分享给大家。
阅读(2223) | 评论(0) | 转发(0) |