また、これらの変数は常に現在ログインしているユーザー名と一致しますか(私のDebianシステムで一致しますか)?他のUnix(-like)システムで利用できると仮定できますか?
またwhoami
、これらの変数のいずれかを読み取るのではなく、なぜ使用するのか興味があります。
USER
とUSERNAME
は、通常の環境変数です。つまり、必要に応じて、任意の値に設定できます。と入力するだけですUSER=xyz
。つまり、これらの変数が存在する場合でも、それらの値が現在ログインしているユーザー名と一致するという保証はありません。
guarantee
、私はデフォルトで意味しました(つまり、ユーザーがそれらを変更しなかったと仮定)。
sudo whoami
し、sudo echo $USER
sudo echo $USER
、シェルは展開$USER
してから呼び出しますsudo
。したがって、もちろん、と同じ出力は生成されませんwhoami
。同様にsudo whoami
、sudo sh -c 'echo $USER'
(通常)outputを行いますroot
。コメントwhoami
EUIDを使用して、ノートsudo whoami
の出力となるroot
場合でも、whoami
UIDを使用します。sudo
セットの両方それは(あなたが明示的に動作するようにそれを設定することは非常に異例な状況を除いて)実行するコマンドのためのEUIDとUID。と比較sudo id -u
してくださいsudo id -ru
。
man
ページを見て、whoami
有効なユーザーIDに関連付けられた名前を報告します。つまりsudo
、setuid実行可能ファイルを使用または実行している場合は、別の何かを返します。sudo
設定済みの場合はsudo whoami
、たとえば試してください。