如果我在脚本中将我的 shell 指定为 /bin/bash,那么 root 的 EUID 为 0。如果我不这样做,并且脚本在我的默认 shell(也是 /bin/bash)中运行,那么 root 的 EUID 是空字符串!我是脚本新手,我认为只要 bash 运行节目就没有区别。
我正在运行的代码检查程序是否由 root 运行,如果不是,则以 sudo 重新启动程序。
#!/bin/bash
echo euid = $EUID
echo shell = $SHELL
if [ $EUID -ne 0 ]; then
sudo "$0"
exit $?
fi
运行时,我看到
euid = 1000
shell = /bin/bash
euid = 0
shell = /bin/bash
但是,如果我删除 she-bang 线,我会得到
euid = 1000
shell = /bin/bash
euid =
shell = /bin/bash
./test.sh: 4: [: -ne: unexpected operator
该脚本在同一个 shell 中运行了四次,那么为什么在 sudo 调用它而不指定 /bin/bash 时它的行为会有所不同?
如果这很重要,我正在运行 Ubuntu 14.04。
提前致谢!