Di mana variabel lingkungan ini disetel?

10

Setiap kali saya membuka terminal, saya memiliki set variabel ini:

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

Di mana variabel ini disetel? Aku sudah memeriksa .bashrc, .bash_profile, /etc/bash.bashrcdan /etc/environmentdan itu tempat ada ?!

Saya juga melihat Pengaturan Sistem di bagian jaringan dan proksi kosong.

klarki
sumber

Jawaban:

17

Untuk bashmenjalankan:

PS4='+$BASH_SOURCE> ' BASH_XTRACEFD=7 bash -xl 7> /tmp/mylog

lalu gunakan

grep "http_proxy=" /tmp/mylog

untuk mencarinya.

Anda juga dapat membatasi pencarian untuk /homedan /etcuntuk hasil yang lebih baik:

$ grep "http_proxy=" /tmp/mylog | grep -e /home -e /etc
++/home/ravexina/.bashrc> http_proxy=http://test:80

yang berarti sudah diatur di blog saya ~/.bashrc.

sumber

Ravexina
sumber
6

Menurut dasarnya duplikat dari apa yang Anda tanyakan di situs Unix & Linux , ada beberapa cara untuk mendekati masalah ini:

  1. gunakan envperintah dan amati urutan di mana variabel dibuat, dan gunakan variabel sebelumnya dan berikutnya untuk mendapatkan gambaran kasar dari mana variabel tersebut berasal
  2. bungkus file yang Anda coba selidiki dengan set -xperintah di awal dan akhir file untuk melihat apa yang dilakukan setiap file; berpotensi file-file itu sumber file lain, dan set -xharus secara eksplisit menyatakan di mana sumber terjadi
  3. Pertimbangkan untuk menelusuri beberapa file yang mungkin Anda miliki di folder rumah melalui find -type f -exec grep 'VARIABLE_NAME' {} \;atau hanya grep -rI 'VARIABLE'. Ini memakan waktu, jadi mungkin bukan hasil terbaik, tapi hei - jika tidak ada metode yang mudah, seseorang tidak boleh mengesampingkan yang sulit.
  4. Jalankan strace -v -s 10000 -e execve,open,read bashdan amati apa yang sedang dibaca dan apa open()panggilan sebelumnya . Ini mungkin berguna dengan 2&>1 > output_trace.txtpengalihan untuk dibaca nanti dan mungkin grep. Sumber
  5. Anda menyebutkan .bashrc, .bash_profile, /etc/bash.bashrc dan / etc / environment. Anda juga perlu memeriksa:

    • /etc/profile
    • /etc/profile.d/*
    • ~/.profile(hanya jika Anda tidak memiliki ~/.bash_profile)
    • ~/.bash_login
  6. Menurut Arch Wiki , beberapa program suka wgetmenggunakan variabel ini. Periksa apakah Anda memiliki .wgetrcatau /etc/wgetrcmengajukan. Ini mungkin diatur di sana, meskipun di mana ia bersumber bashadalah misteri lain

Sergiy Kolodyazhnyy
sumber
2
sudo grep -r http_proxy /etc

harus melakukan trik

byteborg
sumber
0

gnome-terminal itu sendiri (yaitu, perilaku ini hardcoded ke biner) menetapkan beberapa variabel ini berdasarkan nilai gsetting lebar GNOME.

egmont
sumber