新しいFreeBSDインストールにポート/パッケージを自動的にインストールするスクリプトを作成しようとしています。これが機能するには、スクリプトを実行しているユーザーがrootである必要があります。
システムはインストールされていてもインストールされていない可能性があるbash
virginでなければなりません。sudo
これを行うには、ユーザーIDが0であることを確認してください。
問題は、bashとshの環境変数が異なることです。
- bash -> $EUID(すべて大文字)
- sh -> $euid(すべて低)
環境変数に加えてrootユーザーを確認する他の方法はありますか?または、環境に応じてユーザーの確認を調整する必要がありますか?
答え1
値を確認してみましょう。id -u
、次のように任命されました:
有効なユーザーIDのみが「%u \ n」形式で出力されます。
たぶん、次のようなものがあります。
if [ $(id -u) -eq 0 ]
then
: root
else
: not root
fi
答え2
$UID == 0
両方のシェルで簡単にテストできるようです。名前はroot
重要な部分ではなく、実際にはゼロ以外root
のUIDと名付けられたユーザー、または0以外の名前で名前付きUID 0アカウントがある可能性があるため、root
これはおそらくスクリプトが次のように実行されていることを確認するより良い方法です。 。ユーザー。権限を持つユーザー。