Wie deaktiviere ich eine Variable in der Befehlszeile?

Ich habe den folgenden Befehl versucht, um Proxy auf yaourt zu setzen:

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

Die Frage ist, wie der Proxy auf yaourt deaktiviert werden kann. Wie kann ich im Allgemeinen den Wert einer Variablen in der aktuellen Shell deaktivieren?

Kommentare

  • Versuchen Sie unset ALL_PROXY
  • @coffeMug könnte dies genauso gut zu einer Antwort machen. Sie könnten auch in Betracht ziehen, einige Informationen von hier zu stehlen: stackoverflow.com/a/12263914 / 1081936
  • Zusätzlich zur akzeptierten Antwort führen Sie häufig den Befehl ' aus, der eine Umgebungsvariable verwendet, die Sie ' Wenn Sie den Rest Ihrer Shell-Sitzung nicht festlegen oder ändern möchten, können Sie ihn wie folgt ausführen: $ ALL_PROXY=http://proxy.example.com:8080 yaourt, mit dem die envvar nur für den Befehlslauf festgelegt wird . Sie können so viele FOO=bar BAZ=bat -Variablen eingeben, wie Sie möchten, bevor der Befehl ausgeführt wird.

Antwort

Um eine Umgebungsvariable zu entfernen, führen Sie

unset ALL_PROXY 

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

Wenn Sie einer Initialisierungsdatei export ALL_PROXY=… hinzugefügt haben, entfernen Sie diese von dort aus.

Sie können export ohne Argumente ausführen, um zu sehen, welche Umgebungsvariablen in der aktuellen Shell festgelegt sind.

Denken Sie daran Um eine Shell-Variable für die von dieser Shell gestarteten Programme verfügbar zu machen, müssen Sie sie exportieren, indem Sie entweder export VAR nach der Zuweisung VAR=VALUE ausführen oder durch Kombinieren der beiden (export VAR=VALUE).

Kommentare

  • Ich denke, es ist ' ist nicht unbedingt erforderlich, dass die export VAR nach der Zuweisung auftritt. Beachten Sie: sh -c 'export F; F=2; sh -c "echo F2=\$F"; echo F1=$F' druckt " F2 = 2 \ nF1 = 2 ".
  • unset ist auch erforderlich, um assoziative Bash-Arrays zu löschen (dh: bash " Hash-Tabellen " oder " diktiert "), wie in diesem Tutorial unter dem Abschnitt " Löschen von ": künstliche Welten.net/blog/2012/10/17/… .

Antwort

Um eine gebundene Variable in bash zu deaktivieren, verwenden Sie unset VARIABLE (unset ALL_PROXY in Ihrem Fall). Dieser Befehl löscht die Variable tatsächlich. Sie können den Wert einer Variablen auch mit

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 Flag -u mit set verwenden Um zu 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 

Im obigen Beispiel beschwert sich bash über var ist ungebunden (nachdem der Wert deaktiviert wurde). Dies ist der erwartete Fehler (beachten Sie, dass dies im zweiten Echo-Befehl nicht auftritt, was bedeutet, dass var einen Wert hat, der empty oder null).

Kommentare

  • Was wäre, wenn ich Ich habe eine Variable in meiner Shell-Skriptdatei und ich beschaffe diese Datei. Wie kann ich sie dann deaktivieren?
  • @Abhinav Verwenden Sie unset im Skript gilt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.