システム環境変数はsudoに表示されません。

システム環境変数はsudoに表示されません。

私の/etc/environmentファイルには次の行があります。

BROKER_URL=tcp://xxx.30.8.163:61616

私はこれを実行し、次のようになります。

$ set|grep BROKER_URL
BROKER_URL=tcp://xxx.30.8.163:61616

次に、次を実行します。

$ sudo bash
# set|grep BROKER_URL
# 

これはシステム全体の環境変数でなければなりません。なぜ私のsudoシェルに表示されないのですか?

答え1

/etc/environmentファイルですPAMで使用、これはログインを介して処理されますが、sudo bashそうしないことを意味します(でman sudoers):

コマンド環境

環境変数はプログラムの動作に影響を与える可能性があるため、sudoerは実行中のコマンドによって継承されるユーザー環境の変数を制限する方法を提供します。 sudoersには、環境変数を処理する2つの方法があります。

デフォルトでは、env_resetオプションは有効になっています。これにより、コマンドは新しい最小環境で実行されます。 AIX(そしてLinuxシステムいいえポリアクリルアミド)、/ etc / environmentファイルの内容を使用して環境を初期化します。

ほとんどのGNU / LinuxシステムはPAMを使用しています。sudo -iこの問題を解決するには、ログインシェルを試してください。しかし、「ログインシェル」はbashが自分自身を呼び出す方法を表し、sourceを含まず、/etc/environment実際にPAMを介してログインしないため、まだ機能しない可能性があります。

最良の選択は次のとおりです。sudoの設定あなたが欲しいものをしてください。

関連情報