所以我打算运行一个 shell 脚本,但它不起作用,因为它需要以 root 身份运行。事情是我使用 root 身份登录苏命令。
这怎么可能?
root@polo-E15301:/home/polo/Downloads# echo $USER
polo <<<---- regular user
root@polo-E15301:/home/polo/Downloads# whoami
root
root@polo-E15301:/home/polo/Downloads# echo $UID
0
root@polo-E15301:/home/polo/Downloads#
答案1
当su
专门root时,su
不USER
除非请求登录 shell,否则设置;man su
说
为了向后兼容,
su
默认不更改当前目录,仅设置环境变量HOME
和SHELL
(加上USER
并且LOGNAME
如果目标用户不是根)。建议始终使用该--login
选项(而不是其快捷方式-
)以避免混合环境引起的副作用。
如果你使用su --login
你会发现USER
被设置为root。
在 shell 脚本中,应该使用类似的工具来测试 root 权限,id
而不是依赖环境变量。也可以看看谁设置 $USER 和 $USERNAME 环境变量?