そこに同様の質問があります シェルスクリプトがルートとして実行されているかどうかをどのように判断できますか?
同じ疑問があり、結果は異なります
すべてを実行する前にBASHスクリプト内で、スクリプトがスーパーユーザーとして実行されているかどうかを確認し、そうでない場合は、このスクリプトを使用するにはスーパーユーザーである必要があるというメッセージを出力し、その後
askpassなどを使用してユーザーからパスを取得してから、スーパーユーザーと同じスクリプトを実行しますか?
プログラムがルート権限を必要とするが、持っていない場合、私はただSudoを呼び出します:
#!/bin/bash
if [ $(id -u) != 0 ]; then
echo "This script requires root permissions"
Sudo "$0" "$@"
exit
fi
"$0"
には、スクリプトの名前、"$@"
オプション引数が含まれます。プログラムが引数を受け入れない場合は省略できます。
注:このシェルスクリプトはシェルで実行されることが予想されます。このスクリプトをGUIとして実行する場合は、gksu
の代わりにkdesudo
またはSudo
などを使用してください。