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
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.
unset ALL_PROXY
$ ALL_PROXY=http://proxy.example.com:8080 yaourt
die de envvar alleen instelt voor het uitvoeren van de opdracht . U kunt zoveelFOO=bar BAZ=bat
variabelen plaatsen als u wilt voordat het commando wordt uitgevoerd.