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?


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 .


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).


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.