چرا اجرای set-proxy.sh ترمینال شما را تغییر نمیدهد
اسکریپت اجراشده نمیتواند متغیرها را به شل والد خود بازگرداند. وقتی شل فعلی باید تنظیمات را نگه دارد، یک فایل پیکربندی مورد اعتماد را source کنید.
اسکریپت شما خط درست export https_proxy=... را دارد. آن را اجرا میکنید و دستور بعدی هنوز همان پراکسی قدیمی را میبیند. شاید اسکریپت درون فرایند خودش بیعیب کار کرده باشد.
اجرای یک اسکریپت، شل جداگانهای آغاز میکند. میتواند متغیرها را به دستورهایی که آغاز میکند بدهد، اما پس از خروج نمیتواند محیط شل والد ترمینال را جایگزین کند.
./set-proxy.sh
. ./set-proxy.sh
اینها دو عملیات متفاوتاند. دومی از دستور توکار dot شل استفاده میکند تا فایل را در شل فعلی بخواند. Bash هم به آن source میگوید؛ مرجع دستورهای توکار را ببینید.
فقط فایلی را source کنید که به آن اعتماد دارید، چون همه دستورهای شل آن در همین زمینه فعلی اجرا میشوند. اگر پراکسی فقط برای دستورهای درون اسکریپت لازم است، اجرای معمولی مرز درست است. برای یک دستور خارجی، تخصیص پراکسی محدود به دستور از تغییر شل فعلی جلوگیری میکند.
تخصیصهای متغیر را تحتاللفظی نگه دارید. بکتیک به معنای جایگزینی دستور است، نه نقلقول. خطی که پراکسی را تخصیص میدهد نباید بهطور تصادفی بخواهد نشانی URL آن را اجرا کند. برای مقادیری که باید یک نقطه پایانی عمومی را انتخاب کنند، فهرست پراکسی رایگان نامزدهایی میدهد که پروتکلشان باید با کلاینت بخواند. در پایان، نام متغیرهایی را که کلاینت واقعی شبکه میخواند بررسی کنید؛ درست کردن دامنه شل، یک متغیر پشتیبانینشده را کارآمد نمیکند.