Answers:
这很容易实现:
#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "$@"
如果当前用户不是root用户,请通过重新执行脚本sudo
。
请注意,我在sudo
这里使用而不是su
。这是因为它允许您保留参数。如果您使用su
,则您的命令必须是su -c "$0 $@"
这样,如果它们带有空格或特殊的shell字符,它将使参数变乱。
如果您的shell是bash,则可以避免外部调用whoami
:
(( EUID != 0 )) && exec sudo -- "$0" "$@"
sudo: must be setuid root
,则您的sudo发生了某些事情。要解决此问题:chmod u+s $(which sudo)
。是的,我很了解您要执行的操作,我一直在脚本中执行相同的操作。
您可以调用脚本本身并检查:
#! /bin/bash
if [ "root" != "$USER" ]; then
su -c "$0" root
exit
fi
...