私は可能な限りPOSIXと互換性のあるスクリプトを書いているので、bashimの使用を避けています。特定の部分に対して高い権限(root)が必要で、必要に応じてユーザーにメッセージを表示します。現在のユーザーがrootであることを確認する。
UID
checkなど、さまざまな方法がありますEUID
。id -u
検出自体に関連する多くの問題は、次の方法で扱われます。[1]、[2]、[サム]、[4]、[5]などですが、通常bashに関連し、後でコメントにposix関連の警告があります。
どのシェルがどのような方法をサポートしているかわかりません。ほとんどのシェルで動作するPOSIX互換の方法はありますか?
答え1
id -u
はいPOSIXで指定したがって、すべてのPOSIX準拠環境は以下をサポートする必要があります。
[ "$(id -u)" = 0 ]
有効なルートのテストです。
ash
Busybox(および対応する.exe)を使用したテストでは、id
少なくとも私のBusyboxが使用するコンパイルオプションを使用して上記をサポートしていることがわかりました。 (これらの機能のPOSIX仕様に従わないBusyboxを構築することは可能だと思いますが、これはあなたの質問の範囲外です)。