ターミナルを開くたびに、次の変数が設定されます。
$ echo $http_proxy
http://127.0.0.1:8888/
この変数はどこに設定されていますか? .bashrc
、.bash_profile
、/etc/bash.bashrc
、および/etc/environment
を確認しましたが、どこにもありません!?
また、ネットワークセクションの[システム設定]を確認しましたが、プロキシは空です。
bash
の場合:
PS4='+$BASH_SOURCE> ' BASH_XTRACEFD=7 bash -xl 7> /tmp/mylog
次に使用する
grep "http_proxy=" /tmp/mylog
それを検索します。
より良い結果を得るために、検索を/home
および/etc
に制限することもできます。
$ grep "http_proxy=" /tmp/mylog | grep -e /home -e /etc
++/home/ravexina/.bashrc> http_proxy=http://test:80
つまり、~/.bashrc
で設定されています。
nix&Linuxサイト の基本的に 要求したものの複製 によると、この問題に対処する方法はいくつかあります。
env
コマンドを使用して、変数が作成された順序を観察し、前後の変数を使用して、変数がどこから来たかを大まかに把握します。set -x
コマンドで調査しようとするファイルをラップして、各ファイルの機能を確認します。潜在的にこれらのファイルは他のファイルをソースしているので、set -x
はソースが発生する場所を明示的に示す必要がありますfind -type f -exec grep 'VARIABLE_NAME' {} \;
または単にgrep -rI 'VARIABLE'
を使用して、ホームフォルダーにあるファイルのいくつかを調べることを検討してください。これは時間がかかるので、最良の結果ではないかもしれませんが、ちょっと-簡単な方法がない場合は、難しい方法を脇に置いてはいけません。strace -v -s 10000 -e execve,open,read bash
を実行し、何が読み取られ、何が先行するopen()
呼び出しであるかを観察します。これは、後で読むための2&>1 > output_trace.txt
リダイレクト、おそらくgrep
で便利です。 ソース.bashrc、.bash_profile、/ etc/bash.bashrc、および/ etc/environmentについて言及しました。以下も確認する必要があります。
/etc/profile
/etc/profile.d/*
~/.profile
(~/.bash_profile
がない場合のみ)~/.bash_login
Arch Wiki によると、wget
などの一部のプログラムはこの変数を使用します。 .wgetrc
または/etc/wgetrc
ファイルがあるかどうかを確認します。これはそこに設定されているかもしれませんが、bash
のソースは別の謎です
Sudo grep -r http_proxy /etc
トリックを行う必要があります
gnome-terminal
自体(つまり、この動作はバイナリにハードコーディングされています)は、GNOME全体のgsetting値に基づいてこれらの変数の一部を設定します。