私の/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の設定あなたが欲しいものをしてください。