Skriptet ditt inneholder den riktige export https_proxy=...-linjen. Du kjører det, og neste kommando ser fortsatt den gamle proxyen. Skriptet kan ha fungert perfekt inne i sin egen prosess.

Kjøring av et skript starter et eget skall. Det kan sende variabler videre til kommandoene det starter, men det kan ikke erstatte miljøet til det overordnede terminalskallet etter at det avsluttes.

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

Dette er forskjellige operasjoner. Den andre bruker skallets dot-innbygde kommando for å lese filen i det gjeldende skallet. Bash kaller det også source; se referansen for innbygde kommandoer.

Source bare en fil du stoler på, fordi alle skallkommandoene i den kjører i nettopp den gjeldende konteksten. Trengs proxyen bare for kommandoer inne i skriptet, er vanlig kjøring den riktige grensen. For én enkelt ekstern kommando unngår en kommandobundet proxy-tildeling å endre det gjeldende skallet.

Hold variabeltildelinger bokstavelige. Backticks betyr kommandoerstatning, ikke sitering. En linje som tildeler en proxy, bør ikke ved et uhell prøve å kjøre URL-en sin. For verdier som skal velge et offentlig endepunkt, gir listen over gratis proxyer kandidater hvis protokoll må passe til klienten. Til slutt, kontroller variabelnavnene som den faktiske nettverksklienten leser; å rette skallets omfang gjør ikke en ustøttet variabel effektiv.

Relaterte artikler