Cum pot anula o variabilă la linia de comandă?

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

  • Încercați unset ALL_PROXY
  • @coffeMug ar putea la fel de bine să transforme acest lucru într-un răspuns, ați putea lua în considerare și furtul unor informații de aici: stackoverflow.com/a/12263914 / 1081936
  • pe lângă răspunsul acceptat, dacă există o comandă ' pe care o executați adesea, care utilizează o variabilă de mediu pe care ' nu preferați să setați sau să modificați pentru restul sesiunii dvs. de shell, îl puteți rula astfel: $ ALL_PROXY=http://proxy.example.com:8080 yaourt care va seta envvar numai pentru executarea comenzii . Puteți pune cât mai multe FOO=bar BAZ=bat variabile pe care le doriți înainte ca rularea comenzii.

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *