Wie deaktiviere ich eine Variable in der Befehlszeile?

80

Ich habe den folgenden Befehl ausprobiert, um Proxy einzuschalten yaourt:

export ALL_PROXY=http://proxy.example.com:8080

Die Frage ist, wie man den Proxy aufhebt yaourt? Wie kann ich im Allgemeinen den Wert einer Variablen in der aktuellen Shell aufheben?

Hamed Kamrava
quelle
7
Versuchen Sieunset ALL_PROXY
coffeMug
@coffeMug könnte genauso gut eine Antwort daraus machen, Sie könnten auch darüber nachdenken
terdon
Zusätzlich zur akzeptierten Antwort können Sie einen Befehl, der häufig ausgeführt wird und eine Umgebungsvariable verwendet, die Sie für den Rest Ihrer Shell-Sitzung lieber nicht festlegen oder ändern $ ALL_PROXY=http://proxy.example.com:8080 yaourtmöchten, folgendermaßen ausführen: Dadurch wird die envvar nur für die festgelegt Befehlsausführung. Sie können so viele FOO=bar BAZ=batVariablen eingeben, wie Sie möchten, bevor der Befehl ausgeführt wird.
Nur

Antworten:

113

Führen Sie aus, um eine Umgebungsvariable zu entfernen

unset ALL_PROXY

Beachten Sie, dass eine Umgebungsvariable nur in einem Programm und dem Programm, das sie startet, wirksam wird. Wenn Sie eine Umgebungsvariable in einem Shell-Fenster festlegen, hat dies keine Auswirkungen auf andere Shell-Fenster.

Wenn Sie export ALL_PROXY=…eine Initialisierungsdatei hinzugefügt haben , entfernen Sie sie von dort.

Sie können exportohne Argumente ausführen, um festzustellen, welche Umgebungsvariablen in der aktuellen Shell festgelegt sind.

Denken Sie daran, dass Sie eine Shell-Variable exportieren müssen, um sie für die von dieser Shell gestarteten Programme verfügbar zu machen, entweder indem Sie sie export VARnach der Zuweisung ausführen VAR=VALUEoder indem Sie die beiden ( export VAR=VALUE) kombinieren .

Gilles
quelle
19

Um eine gebundene Variable in bash zu entfernen, verwenden Sie unset VARIABLE( unset ALL_PROXYin Ihrem Fall). Dieser Befehl löscht die Variable tatsächlich. Sie können den Wert einer Variablen auch so einstellen, dass er sich nach leert

VARIABLE=

oder

VARIABLE=""

Der Unterschied besteht darin, dass die beiden letzteren Befehle die Variable nicht löschen. Sie können den Unterschied erkennen, indem Sie das -uFlag mit verwenden, um setzu erzwingen, dass die nicht gesetzten Variablen beim Ersetzen als Fehler behandelt werden:

/home/user1> var=""
/home/user1> echo $var

/home/user1> set -u
/home/user1> echo $var

/home/user1> unset var
/home/user1> echo $var
-bash: var: unbound variable

In dem obigen Beispiel, klagt bash über varungebunden ist (nach unsetting seinem Wert) , die der erwartete Fehler ist (beachten Sie, dass diese nicht in der zweiten Echo - Befehl geschieht, was bedeutet , dass vareinen Wert hat, ist emptyoder null).

Kaffeebecher
quelle
Was ist, wenn ich eine Variable in meiner Shell-Skriptdatei habe und diese Datei als Quelle habe? Wie kann ich das dann deaktivieren?
Abhinav
@Abhinav unsetim Skript verwenden. Gleiches gilt.
coffeMug