Dein Skript enthält die richtige Zeile export https_proxy=.... Du führst es aus, und der nächste Befehl sieht trotzdem den alten Proxy. Vielleicht hat das Skript innerhalb seines eigenen Prozesses einwandfrei funktioniert.

Das Ausführen eines Skripts startet eine eigene Shell. Sie kann Variablen an die Befehle weitergeben, die sie startet, aber sie kann die Umgebung der übergeordneten Terminal-Shell nach ihrem Ende nicht ersetzen.

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

Das sind verschiedene Vorgänge. Der zweite nutzt das dot-Builtin der Shell, um die Datei in der aktuellen Shell zu lesen. Bash nennt das auch source; siehe die Builtin-Referenz.

Lade nur eine Datei per source, der du vertraust, denn alle ihre Shell-Befehle laufen in diesem aktuellen Kontext. Wird der Proxy ausschließlich für Befehle innerhalb des Skripts gebraucht, ist normales Ausführen die richtige Grenze. Für einen einzelnen externen Befehl vermeidet eine befehlsgebundene Proxy-Zuweisung eine Änderung der aktuellen Shell.

Halte Variablenzuweisungen wörtlich. Backticks bedeuten Befehlssubstitution, nicht Zitierung. Eine Zeile, die einen Proxy zuweist, sollte nicht versehentlich versuchen, ihre URL auszuführen. Für Werte, die einen öffentlichen Endpunkt auswählen sollen, liefert die Liste kostenloser Proxys Kandidaten, deren Protokoll zum Client passen muss. Prüfe schließlich die Variablennamen, die der tatsächliche Netzwerkclient liest; den Shell-Gültigkeitsbereich zu korrigieren macht eine nicht unterstützte Variable nicht wirksam.

Ähnliche Artikel