web-dev-qa-db-ja.com

WSLで `printenv`で` http_proxy`が表示されない

企業ファイアウォールの背後でpipを動作させるのに問題があります。 httpおよびhttpsプロキシを/etc/environmentファイルに追加し、echo "$HTTP_PROXY"を実行すると正しい結果が出力されます。ただし、envまたはprintenvを実行すると、プロキシ変数は表示されません。これがpipも失敗している理由だと思います。どんな洞察もいただければ幸いです。私の/etc/environmentファイルは次のようになります

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
http_proxy="http://<stuff>.<stuff>.org:80"
HTTP_PROXY="http://<stuff>.<stuff>.org:80"
https_proxy="https://<stuff>.<stuff>.org:443"
HTTPS_PROXY="https://<stuff>.<stuff>.org:443"

また、~/.bashrcファイルにも同じ行を追加しました。

3
irh

WSLはシェルの起動時にPAMスタックを使用しないため(ログインかどうかは関係ありません)、PAMベースの処理は失敗します。

  • /etc/environmentおよび~/.pam_environmentpam_envによって読み取られ、適用しない( WSL#1405
  • pam_umaskからのデフォルトのumaskは設定されていません( WSL#352
  • pam_limitsからの制限( WSL#1576

特に環境設定では、.profile(ログインシェルを実行している場合)または.bashrcexportを指定して追加するのが最も簡単かもしれません。


一般的に、単純な解決策はないようです。

ユーザーとして再度ログインできます。

Sudo -iu "$USER"
su - "$USER"

これらは、それぞれ/etc/pam.d/Sudoまたは/etc/pam.d/suにPAM構成をロードする必要があります。しかし、これらは互いにわずかに異なり、/etc/pam.d/sshdまたは/etc/pam.d/lightdmとも異なるため、すべてがGUIまたはSSHを介して実際のUbuntuシステムにログインした場合と同じではありません。

Sudosuは両方ともパスワードを要求しますが、両方ともパスワードを要求しないように構成できます。)

4
muru