למה הרצת set-proxy.sh לא משנה את הטרמינל שלכם
סקריפט שמופעל אינו יכול לייצא משתנים בחזרה ל-shell האב שלו. בצעו source לקובץ תצורה מהימן כאשר ה-shell הנוכחי צריך לשמור על ההגדרות.
הסקריפט שלכם מכיל את השורה הנכונה export https_proxy=.... אתם מריצים אותו, והפקודה הבאה עדיין רואה את ה-proxy הישן. ייתכן שהסקריפט עבד באופן מושלם בתוך התהליך שלו עצמו.
הרצת סקריפט מפעילה shell נפרד. הוא יכול להעביר משתנים לפקודות שהוא מפעיל, אך אינו יכול להחליף את הסביבה של shell האב של הטרמינל לאחר שהוא מסתיים.
./set-proxy.sh
. ./set-proxy.sh
אלו פעולות שונות. השנייה משתמשת ב-builtin dot של ה-shell כדי לקרוא את הקובץ ב-shell הנוכחי. Bash קורא לזה גם source; ראו את מדריך ה-builtins שלו.
בצעו source רק לקובץ שאתם סומכים עליו, מפני שכל פקודות ה-shell שלו פועלות בהקשר הנוכחי הזה. אם ה-proxy נחוץ רק לפקודות בתוך הסקריפט, הרצה רגילה היא הגבול הנכון. עבור פקודה חיצונית אחת, הקצאת proxy מוגבלת לפקודה מונעת שינוי של ה-shell הנוכחי.
השאירו השמות משתנים מילוליים. backticks פירושם החלפת פקודה, לא ציטוט. שורה שמקצה proxy לא אמורה לנסות להריץ את ה-URL שלה בטעות. עבור ערכים שנועדו לבחור נקודת קצה ציבורית, רשימת ה-proxy החינמיים מספקת מועמדים שהפרוטוקול שלהם חייב להתאים ללקוח. לבסוף, בדקו את שמות המשתנים שלקוח הרשת בפועל קורא; תיקון היקף ה-shell אינו הופך משתנה לא נתמך ליעיל.