これは非常に簡単に実現できます:
#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"
現在のユーザーが root でない場合は、sudo
からスクリプトを再実行します。 .
sudo
を使用していることに注意してください su
の代わりにここに .これは、引数を保持できるためです。 su
を使用する場合 、あなたのコマンドは su -c "$0 [email protected]"
でなければなりません 引数にスペースや特殊なシェル文字が含まれていると、引数が台無しになります。
シェルが bash の場合、whoami
への外部呼び出しを回避できます。 :
(( EUID != 0 )) && exec sudo -- "$0" "[email protected]"
UID も確認できます:
if [ $(id -u) != 0 ]; then
echo "You're not root"
# elevate script privileges
fi
スクリプト自体を呼び出して確認できます:
#! /bin/bash
if [ "root" != "$USER" ]; then
su -c "$0" root
exit
fi
...