45

OSX と Linux の両方のライブラリをコンパイルしてインストールする Bash インストーラー スクリプトを作成しています。スクリプトの一部のコマンド (「make install」、「apt-get install」、「port install」など) には sudo が必要なため、ユーザーにパスワードを入力してもらう必要があります。

現在、ユーザーは最初の sudo コマンドを実行しようとするたびにパスワードの入力を求められますが、これは多くの場合コンパイル段階の後であるため、スクリプトを開始してからパスワードを入力する必要があるまでには常に時間がかかります。

スクリプトの先頭にパスワード入力+チェックを入れたいと思います。また、これが本当にシステム ライブラリをインストールする適切な方法であるかどうかにも興味があります。

または、sudo を必要としないローカル サンドボックスの場所にライブラリをインストールすることもできますが、apt-get と macports に、デフォルトの /usr/local/ と /opt/local 以外のライブラリをインストールする場所を指定する必要があります。 、それを行う方法も、それが賢明なアイデアであるかどうかもわかりません。

4

4 に答える 4

85

パスワードを取得するにsudo echo "Thanks."は、スクリプトの先頭に置くだけです。

しかし、私はこの解決策を好むでしょう:

if [[ $UID != 0 ]]; then
    echo "Please run this script with sudo:"
    echo "sudo $0 $*"
    exit 1
fi
于 2010-10-20T09:31:40.303 に答える
1

少し読みやすいかもしれません:

[ $(whoami) == "root" ] || exit
于 2019-09-06T15:57:01.753 に答える
1

それについて行く別の方法:

function checkSudo() {
    if ((EUID != 0)); then
        echo "Granting root privileges for script ( $SCRIPT_NAME )"
        if [[ -t 1 ]]; then
            sudo "$0" "$@"
        else
            exec 1>output_file
            gksu "$0" "$@"
        fi
        exit
    fi
}
于 2018-05-26T02:43:44.003 に答える