Ich bin ziemlich neu im Bash-Scripting. Ich versuche, ein Skript zum Exportieren der http_proxy-Variablen zu erstellen. Folgendes mache ich vom Terminal aus:
$export http_proxy=http://proxy21.iitd.ernet.in:3128/
$export https_proxy=https://proxy21.iitd.ernet.in:3128/
Das funktioniert einwandfrei. Hier ist mein Skript (mit dem Namen setproxy):
#!/usr/bin/env bash
if [ $1 -eq 22 ]
then
export http_proxy=http://proxy22.iitd.ernet.in:3128/
export https_proxy=https://proxy22.iitd.ernet.in:3128/
elif [ $1 -eq 21 ]
then
export http_proxy=http://proxy21.iitd.ernet.in:3128/
export https_proxy=https://proxy21.iitd.ernet.in:3128/
elif [ $1 -eq 61 ]
then
export http_proxy=http://proxy61.iitd.ernet.in:3128/
export https_proxy=https://proxy61.iitd.ernet.in:3128/
elif [ $1 -eq 62 ]
then
export http_proxy=http://proxy62.iitd.ernet.in:3128/
export https_proxy=https://proxy62.iitd.ernet.in:3128/
fi
Im Wesentlichen möchte ich den entsprechenden Proxyserver abhängig von der Eingabe festlegen. Ich habe es in den Bin-Ordner gelegt, es ausführbar gemacht, Bin zum Pfad hinzugefügt, mich angemeldet und abgemeldet. Das Terminal akzeptiert setproxy als gültigen Befehl (zumindest gibt es keinen Fehler „Befehl nicht gefunden“). Aber wenn ich das tue:
$setproxy 22
Es gibt keinen Effekt. Der Proxy bleibt unverändert. Was mache ich falsch?
Antwort1
Wenn Sie das Skript aufrufen, wird eine neue untergeordnete Shell aufgerufen, um es auszuführen. Ihre Proxys sind festgelegt, aber der Proxy des übergeordneten Prozesses (Ihre Shell) kann nicht von einem untergeordneten Prozess aus geändert werden. Versuchen SieBeschaffungdas Skript, d. h. nennen Sie es wie
. setproxy 21
Dann wird das Skript von Ihrer aktuellen Shell interpretiert.