สคริปต์ของคุณมีบรรทัด export https_proxy=... ที่ถูกต้อง คุณรันมัน แล้วคำสั่งถัดไปก็ยังเห็น proxy ตัวเก่า สคริปต์อาจทำงานได้อย่างสมบูรณ์ภายในโปรเซสของมันเอง

การรันสคริปต์จะเริ่มเชลล์แยกต่างหาก มันส่งตัวแปรไปยังคำสั่งที่มันเริ่มได้ แต่ไม่สามารถแทนที่สภาพแวดล้อมของเชลล์แม่ของเทอร์มินัลหลังจากที่มันจบได้

./set-proxy.sh
. ./set-proxy.sh

ทั้งสองเป็นการดำเนินการที่ต่างกัน อย่างที่สองใช้ builtin dot ของเชลล์เพื่ออ่านไฟล์ในเชลล์ปัจจุบัน Bash เรียกสิ่งนี้ว่า source ด้วย ดูเอกสารอ้างอิง builtin ของมัน

ใช้ source เฉพาะไฟล์ที่คุณเชื่อถือ เพราะคำสั่งเชลล์ทั้งหมดของไฟล์นั้นทำงานในบริบทปัจจุบันนั้น ถ้าต้องการ proxy สำหรับคำสั่งภายในสคริปต์เท่านั้น การรันตามปกติคือขอบเขตที่ถูกต้อง สำหรับคำสั่งภายนอกเพียงคำสั่งเดียว การกำหนด proxy ที่จำกัดเฉพาะคำสั่ง จะหลีกเลี่ยงการเปลี่ยนเชลล์ปัจจุบัน

เก็บการกำหนดตัวแปรไว้ตามตัวอักษร Backtick หมายถึงการแทนที่คำสั่ง ไม่ใช่การอ้างอิง บรรทัดที่กำหนด proxy ไม่ควรพยายามรัน URL ของมันโดยไม่ตั้งใจ สำหรับค่าที่ตั้งใจจะเลือกปลายทางสาธารณะ รายการ proxy ฟรี มีผู้สมัครที่โปรโตคอลต้องตรงกับไคลเอนต์ สุดท้าย ตรวจสอบชื่อตัวแปรที่ไคลเอนต์เครือข่ายจริงอ่าน การแก้ขอบเขตของเชลล์ไม่ได้ทำให้ตัวแปรที่ไม่รองรับมีผล

บทความที่เกี่ยวข้อง