Hoe schakel ik een variabele uit op de opdrachtregel?

Ik heb de volgende opdracht geprobeerd om proxy in te stellen op yaourt:

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

De vraag is hoe je de proxy op yaourt uitschakelt? Hoe kan ik in het algemeen de waarde van een variabele in de huidige shell uitschakelen?

Opmerkingen

  • Probeer unset ALL_PROXY
  • @coffeMug kan er net zo goed een antwoord van maken, je zou ook kunnen overwegen hier wat informatie te stelen: stackoverflow.com/a/12263914 / 1081936
  • naast het geaccepteerde antwoord, als er ' sa-commando is dat u vaak uitvoert en die een omgevingsvariabele gebruikt die u ' Als je het liever niet instelt of wijzigt voor de rest van je shell-sessie, kun je het uitvoeren als: $ ALL_PROXY=http://proxy.example.com:8080 yaourt die de envvar alleen instelt voor het uitvoeren van de opdracht . U kunt zoveel FOO=bar BAZ=bat variabelen plaatsen als u wilt voordat het commando wordt uitgevoerd.

Antwoord

Om een omgevingsvariabele te verwijderen, draait u

unset ALL_PROXY 

Merk op dat een omgevingsvariabele alleen in werking treedt in een programma en het programma dat het lanceert. Als je een omgevingsvariabele in een shell-venster instelt, heeft dit geen “invloed op andere shell-vensters.

Als je export ALL_PROXY=… aan een initialisatiebestand hebt toegevoegd, verwijder je het van daaruit.

U kunt export zonder argumenten uitvoeren om te zien welke omgevingsvariabelen in de huidige shell zijn ingesteld.

Onthoud dat om een shell-variabele beschikbaar te maken voor de programmas die door die shell worden gestart, moet je deze exporteren, ofwel door export VAR uit te voeren na de toewijzing VAR=VALUE of door de twee te combineren (export VAR=VALUE).

Reacties

  • Ik denk dat het ' is niet essentieel dat de export VAR voorkomt na de toewijzing. Let op: sh -c 'export F; F=2; sh -c "echo F2=\$F"; echo F1=$F' prints " F2 = 2 \ nF1 = 2 ".
  • unset is ook vereist om associatieve bash-arrays te wissen (dwz: bash " hashtabellen ", of " dicts "), zoals in deze tutorial wordt uitgelegd onder de sectie met de titel " Wissen van ": artificialworlds.net/blog/2012/10/17/… .

Answer

Om een gebonden variabele in bash uit te schakelen, gebruik unset VARIABLE (unset ALL_PROXY in jouw geval). Met deze opdracht wordt de variabele daadwerkelijk verwijderd. U kunt de waarde van een variabele ook op leeg zetten door

VARIABLE= 

of

VARIABLE="" 

Het verschil is dat de twee laatste opdrachten de variabele niet verwijderen. U kunt het verschil zien door de -u vlag te gebruiken met set om het te dwingen de niet-ingestelde variabelen als een fout te behandelen tijdens het vervangen van:

/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 het bovenstaande voorbeeld klaagt bash over var is niet gebonden (na het uitschakelen van de waarde), wat de verwachte fout is (merk op dat dit niet gebeurt in de tweede echo-opdracht, wat betekent dat var een waarde heeft die empty of null).

Opmerkingen

  • wat als ik heb een variabele in mijn shell-scriptbestand en ik bron dat bestand, hoe ga ik dat dan uitschakelen?
  • @Abhinav gebruik unset in het script. Hetzelfde is van toepassing.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *