回答:
以下のための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
ます。
本質的に、Unixと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
は別の謎です