Am încercat următoarea comandă pentru a seta Proxy pe yaourt
:
export ALL_PROXY=http://proxy.example.com:8080
Întrebarea este cum să dezactivați proxy-ul pe yaourt
? În general, cum pot anula valoarea unei variabile în shell-ul curent?
Comentarii
Răspuns
Pentru a elimina o variabilă de mediu, rulați
unset ALL_PROXY
Rețineți că o variabilă de mediu are efect doar într-un program și programul lansează. Dacă setați o variabilă de mediu într-o fereastră shell, aceasta nu afectează alte ferestre shell.
Dacă ați adăugat export ALL_PROXY=…
la un fișier de inițializare, eliminați de acolo.
Puteți rula export
fără argumente pentru a vedea ce variabile de mediu sunt setate în shell-ul curent.
Amintiți-vă că pentru a face o variabilă shell disponibilă pentru programele pornite de acel shell, trebuie să o exportați, fie executând export VAR
după atribuirea VAR=VALUE
sau prin combinarea celor două (export VAR=VALUE
).
Comentarii
- Cred că nu este esențial ca
export VAR
să apară după atribuire. Observați:sh -c 'export F; F=2; sh -c "echo F2=\$F"; echo F1=$F'
imprimă " F2 = 2 \ nF1 = 2 ". -
unset
este, de asemenea, necesar pentru a șterge matrici asociative bash (adică: bash " tabele hash ", sau " dicte "), așa cum explică acest tutorial în secțiunea intitulată " Clearing ": artificialworlds.net/blog/2012/10/17/… .
Răspuns
Pentru a anula o variabilă legată în bash utilizați unset VARIABLE
(unset ALL_PROXY
în cazul dvs.). Această comandă șterge de fapt variabila. De asemenea, puteți seta valoarea unei variabile să fie golită de
VARIABLE=
sau
VARIABLE=""
Diferența este că cele două comenzi din urmă nu șterge variabila. Puteți vedea diferența utilizând semnalizatorul -u
cu set
pentru a-l forța să trateze variabilele nesetate ca pe o eroare în timp ce înlocuiește:
/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
În exemplul de mai sus, bash se plânge de var
este nelegat (după dezactivarea valorii sale), care este eroarea așteptată (rețineți că acest lucru nu se întâmplă în a doua comandă echo, ceea ce înseamnă că var
are o valoare care este empty
sau null
).
Comentarii
- ce se întâmplă dacă Am o variabilă în fișierul meu script de shell și am sursă acel fișier, atunci cum voi dezactiva acest lucru?
- @Abhinav utilizați
unset
în script. se aplică.
unset ALL_PROXY
$ ALL_PROXY=http://proxy.example.com:8080 yaourt
care va seta envvar numai pentru executarea comenzii . Puteți pune cât mai multeFOO=bar BAZ=bat
variabile pe care le doriți înainte ca rularea comenzii.