`sudo su`の後に環境変数は表示されません。

`sudo su`の後に環境変数は表示されません。

user_aユーザー環境変数で以下を設定しました.profile export NODE_ENV=dev

ユーザーとしてログインして bash シェルを起動すると、環境変数が正しく設定されます。これにより、期待どおりに印刷さecho $NODE_ENVれます。dev

他のユーザーとしてログインしたuser_b後、user_amakeコマンドはsudo su user_a環境変数を設定しません。

環境変数がNODE_ENV設定されているかどうかを確認するには?

答え1

コマンドを実行すると、プロファイルsu user全体をロードせずにそのユーザーに切り替えられます。$HOME$SHELLおよび変数のみ$USERがロードされます。$LOGNAMEユーザーに切り替えたときにユーザーのプロファイル全体をロードするには、--loginこのフラグを使用してそのユーザーとしてログインしたことを指定する必要があります。このフラグのショートカットは-suの後のダッシュ()なので、コマンドは次のようになりますsu - user

答え2

env_keep += "NODE_ENV"に次のように追加することをお勧めします/etc/sudoers.d/

  1. sudo -i問題が発生した場合に備えて、ルートシェルを実行してください(一度間違いを犯して修正するのは本当に面倒でした)。
  2. 別のシェルで次を実行します。sudo visudo -f /etc/sudoers.d/envkeep
  3. このファイルに以下を追加してください。Defaults env_keep += "NODE_ENV"
  4. 保存して終了してもう一度やり直してくださいsudo -i。動作し、NODE_ENV保存する必要があるシェルに入れる必要があります。

関連情報