私は/etc/environment
:
http_proxy=http://myproxy.net:12345
マシンを再起動した後、ログインして変数を確認します。
root@d6c44fa03243:/# echo $http_proxy
(empty)
なぜ変数が設定されないのですか?
注:これがDockerコンテナーであることを言及する必要がありますが、違いが生じる理由はわかりません。
システムの詳細(Ubuntu 16.04.4 Xenial Xerus
):
root@d6c44fa03243:/# uname -a
Linux d6c44fa03243 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
root@d6c44fa03243:/# cat /etc/issue
Ubuntu 16.04.4 LTS \n \l
buntuドキュメント によると:
/ etc/environment
このファイルは、特にシステム全体の環境変数設定用です。これはスクリプトファイルではなく、1行に1つずつ割り当て式で構成されています。
UNIXツールは transparency を念頭に置いて構築されているため、grep
の助けを借りて答えを見つけることができます。フルOSとコンテナーのどちらを使用していてもかまいません(後者は、透過的にするために必要なツールをインストールするために追加の手順を実行する必要がある場合があることを意味します)。
OSにgrep
がインストールされていることを確認し、Sudo grep -R "/etc/environment" /etc/*
を実行します。これにより、すべてのシステムスクリプトと構成が検索され、どのファイルがこのファイルを使用しているかがわかります。デフォルトのubuntu/xenial64 vagrantボックスでは、 このファイルを使用するスクリプトと構成 は、ほとんど/etc/init.d/
/etc/pam.d/
と/etc/rc.*.d/
にあります。
次の構成は、シェルで/etc/environment
の変数を設定する方法です。
/etc/pam.d/login /etc/pam.d/su /etc/pam.d/sshd
man pam_env
から:
Pam_env PAMモジュールは、環境変数の(非)設定を可能にします。 ...
このモジュールは、個別の行(デフォルトでは/ etc/environment)に単純なKEY = VALペアを持つファイルを解析することもできます。 envfileフラグを使用して、解析するデフォルトファイルを変更し、readenvフラグをそれぞれ1または0に設定して、ファイルをオンまたはオフにできます。 ...
Dockerコンテナーで同様の検索を実行します。コンテナがpam_env.so
を使用しているかどうかを確認できます。
おそらく最良の解決策は、起動プロセスで/etc/environment
から環境変数を作成することですが、そのアドバイスは、何を構築しているかを理解せずに提供されます。 `/etc/rc*.d/での使用はこれを達成する方法の良い例かもしれません。
ほとんどの人は@ ben-njeriのアドバイスに従い、 bash Shell のデフォルト構成ファイルに変数を設定します。
構成、設定 /etc/profile
または~/.bashrc
または~/.bash_profile
ファイルは、新しいシェルが起動されるたびに変数をエクスポートします。
/etc/profile
はシステム全体用で、その他は特定のユーザー用です。
最後に以下のような行を追加してください:
export http_proxy=”http://myproxy.net:12345”
export ftp_proxy=”http://myproxy.net:12345”
export https_proxy=”http://myproxy.net:12345"
したがって、シェルを起動するたびに変数がロードされ、使用できます。