rootとして実行していますが、$ USERは通常のユーザーを返しますか?

rootとして実行していますが、$ USERは通常のユーザーを返しますか?

だからシェルスクリプトを実行しようとしていますが、rootとして実行する必要があるため動作しません。問題は、私がrootとしてログインしたことです注文する。

どうやってこれができますか?

root@polo-E15301:/home/polo/Downloads# echo $USER
polo      <<<---- regular user
root@polo-E15301:/home/polo/Downloads# whoami
root
root@polo-E15301:/home/polo/Downloads# echo $UID
0
root@polo-E15301:/home/polo/Downloads# 

答え1

具体的にルーティングするときsusu いいえUSERログインシェルが要求されない限り設定されます。man su説明する

以前のバージョンとの互換性のため、デフォルトではsu現在のディレクトリは変更されず、環境変数のみが設定されますHOMESHELLプラスUSERLOGNAMEターゲットの場合ユーザールートではない)混合環境によって引き起こされる副作用を避けるために、この--loginオプション(ショートカットの代わりに)を常に使用することをお勧めします。-

使用するとルートに設定されていることがsu --loginわかります。USER

シェルスクリプトでは、id環境変数に依存するのではなく、同様のツールを使用してroot権限をテストする必要があります。また、見ることができます$USERおよび$USERNAME環境変数は誰が設定しますか?

関連情報