ชุดตัวแปรสภาพแวดล้อมนี้อยู่ที่ไหน


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 ตัวมันเอง (นั่นคือพฤติกรรมนี้ถูกฮาร์ดโค้ดเป็นเลขฐานสอง) ตั้งค่าตัวแปรเหล่านี้บางอย่างตามค่า gsetting ทั่ว GNOME

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.