Защо изпълнението на set-proxy.sh не променя терминала ви
Изпълнен скрипт не може да експортира променливи обратно към родителската обвивка. Заредете доверен конфигурационен файл с source, когато текущата обвивка трябва да запази настройките.
Вашият скрипт съдържа правилния ред export https_proxy=.... Изпълнявате го, а следващата команда все още вижда стария proxy. Възможно е скриптът да е работил безупречно в собствения си процес.
Изпълнението на скрипт стартира отделна обвивка. Тя може да предава променливи на командите, които стартира, но не може да замени средата на родителската терминална обвивка след излизането си.
./set-proxy.sh
. ./set-proxy.sh
Това са различни операции. Втората използва вградената команда dot на обвивката, за да прочете файла в текущата обвивка. Bash нарича това също source; вижте справочника за вградените команди.
Зареждайте с source само файл, на който имате доверие, защото всички негови команди на обвивката се изпълняват в този текущ контекст. Ако proxy е нужен само за командите вътре в скрипта, обикновеното изпълнение е правилната граница. За една външна команда задаване на proxy, ограничено до команда избягва промяна на текущата обвивка.
Пазете присвояванията на променливи буквални. Backtick означават заместване на команда, а не цитиране. Ред, който задава proxy, не бива случайно да се опитва да изпълни своя URL. За стойности, предназначени за избор на публична крайна точка, списъкът с безплатни proxy предлага кандидати, чийто протокол трябва да съвпада с клиента. Накрая проверете имената на променливите, които чете действителният мрежов клиент; поправянето на обхвата на обвивката не прави неподдържана променлива ефективна.