Porque executar set-proxy.sh não altera o seu terminal
Um script executado não pode exportar variáveis de volta para o shell pai. Carregue com source um ficheiro de configuração de confiança quando o shell atual tiver de manter as definições.
O seu script contém a linha export https_proxy=... correta. Executa-o, e o comando seguinte continua a ver o proxy antigo. Talvez o script tenha funcionado perfeitamente dentro do seu próprio processo.
Executar um script inicia um shell separado. Pode passar variáveis aos comandos que inicia, mas não pode substituir o ambiente do shell pai do terminal depois de terminar.
./set-proxy.sh
. ./set-proxy.sh
São operações diferentes. A segunda usa o builtin dot do shell para ler o ficheiro no shell atual. O Bash também lhe chama source; consulte a referência dos builtins.
Faça source apenas de um ficheiro em que confia, porque todos os seus comandos de shell correm nesse contexto atual. Se o proxy só for necessário para comandos dentro do script, a execução normal é o limite correto. Para um único comando externo, uma atribuição de proxy limitada ao comando evita alterar o shell atual.
Mantenha as atribuições de variáveis literais. Os acentos graves significam substituição de comandos, não citação. Uma linha que atribui um proxy não deve tentar executar o seu URL por acidente. Para valores destinados a escolher um endpoint público, a lista de proxies gratuitos fornece candidatos cujo protocolo tem de corresponder ao cliente. Por fim, verifique os nomes das variáveis que o cliente de rede real lê; corrigir o âmbito do shell não torna eficaz uma variável não suportada.