user_a
ユーザー環境変数で以下を設定しました.profile
。
export NODE_ENV=dev
ユーザーとしてログインして bash シェルを起動すると、環境変数が正しく設定されます。これにより、期待どおりに印刷さecho $NODE_ENV
れます。dev
他のユーザーとしてログインしたuser_b
後、user_a
makeコマンドは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/
。
sudo -i
問題が発生した場合に備えて、ルートシェルを実行してください(一度間違いを犯して修正するのは本当に面倒でした)。- 別のシェルで次を実行します。
sudo visudo -f /etc/sudoers.d/envkeep
- このファイルに以下を追加してください。
Defaults env_keep += "NODE_ENV"
- 保存して終了してもう一度やり直してください
sudo -i
。動作し、NODE_ENV
保存する必要があるシェルに入れる必要があります。