답변:
대한 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.
본질적에 따르면 당신이 무엇을 요구의 중복 에 유닉스 및 리눅스 사이트 ,이 문제를 접근하는 방법은 몇 가지가 있습니다 :
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_loginArch Wiki 에 따르면 일부 프로그램은 wget이 변수를 사용합니다. .wgetrc또는 /etc/wgetrc파일 이 있는지 확인하십시오 . 소스가있는 곳 bash은 또 다른 미스터리 이지만, 이것은 거기에 설정 될 수 있습니다.