POSIX準拠の高度検出

POSIX準拠の高度検出

私は可能な限りPOSIXと互換性のあるスクリプトを書いているので、bashimの使用を避けています。特定の部分に対して高い権限(root)が必要で、必要に応じてユーザーにメッセージを表示します。現在のユーザーがrootであることを確認する

UIDcheckなど、さまざまな方法がありますEUIDid -u検出自体に関連する多くの問題は、次の方法で扱われます。[1][2][サム][4][5]などですが、通常bashに関連し、後でコメントにposix関連の警告があります。

どのシェルがどのような方法をサポートしているかわかりません。ほとんどのシェルで動作するPOSIX互換の方法はありますか?

答え1

id -uはいPOSIXで指定したがって、すべてのPOSIX準拠環境は以下をサポートする必要があります。

[ "$(id -u)" = 0 ]

有効なルートのテストです。

ashBusybox(および対応する.exe)を使用したテストでは、id少なくとも私のBusyboxが使用するコンパイルオプションを使用して上記をサポートしていることがわかりました。 (これらの機能のPOSIX仕様に従わないBusyboxを構築することは可能だと思いますが、これはあなたの質問の範囲外です)。

関連情報