EUID UID 不同。在脚本中都使用了这两种上下文?

我尝试通过echo "UID is $UID and EUID is $EUID"获取值,但是只有空格作为输出。我的机器运行Ubuntu 12.04 LTS。在某些站点上可以看到,这通常用于检查它是否是root用户,并且所有用户都无法获得适当的区别。

最佳答案

它仅适用于bash,而不适用于破折号(在基于Debian的发行版中,因为Ubuntu sh通常是破折号的符号链接(symbolic link))。

如果以交互方式运行脚本,则可能未将ba​​sh配置为默认 shell 程序,请在尝试运行bash之前进行操作。

如果从控制台运行它:

bash script.sh

如果使用它的路径(例如./script.sh)运行它,请确保脚本的第一行是:
#!/bin/bash

并不是:
#!/bin/sh

有关更通用的方法,请检查:https://askubuntu.com/questions/15853/how-can-a-script-check-if-its-being-run-as-root

在那篇文章中提到了id命令,其中:
id -u    # is the EUID
id -u -r # is the UID

09-04 20:35