この環境変数はどこに設定されていますか?


10

端末を開くたびに、次の変数が設定されます。

$ echo $http_proxy
http://127.0.0.1:8888/

この変数はどこに設定されていますか?私がチェックした.bashrc.bash_profile/etc/bash.bashrcそして/etc/environment、それはどこにもあります!

ネットワークセクションのシステム設定も確認しましたが、プロキシが空です。

回答:


17

以下のための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ます。

ソース


6

本質的にUnixとLinuxのサイト尋ね内容の複製によるとこの問題に対処する方法はいくつかあります。

  1. envコマンドを使用して、変数が作成された順序を観察し、前後の変数を使用して、変数がどこから来たのかを大まかに把握します
  2. set -xコマンドで調査しようとするファイルをファイルの最初と最後にラップして、各ファイルの機能を確認します。潜在的にそれらのファイルは他のファイルを調達してset -xいるため、調達が発生する場所を明示的に示す必要があります
  3. find -type f -exec grep 'VARIABLE_NAME' {} \;またはを介して、ホームフォルダーにある可能性のあるファイルをいくつか検討することを検討してくださいgrep -rI 'VARIABLE'。これは時間がかかるので、最良の結果ではないかもしれませんが、ちょっと-簡単な方法がない場合は、難しい方法を脇に置いてはいけません。
  4. strace -v -s 10000 -e execve,open,read bash何が読み取られ、前のopen()呼び出しが何であるかを実行して観察します。これは、2&>1 > output_trace.txt後で読むためのリダイレクトに役立ちgrepます。ソース
  5. .bashrc、.bash_profile、/ etc / bash.bashrc、および/ etc / environmentについて言及しました。以下も確認する必要があります。

    • /etc/profile
    • /etc/profile.d/*
    • ~/.profile(がない場合のみ~/.bash_profile
    • ~/.bash_login
  6. Arch Wikiによると、いくつかのプログラムwgetはこの変数を使用しています。.wgetrcまたは/etc/wgetrcファイルがあるかどうかを確認します。これはそこに設定されているかもしれませんが、どこに供給されるかbashは別の謎です



0

gnome-terminal それ自体(つまり、この動作はバイナリにハードコードされています)は、GNOME全体のgsetting値に基づいてこれらの変数の一部を設定します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.