Ho provato il seguente comando per impostare Proxy su yaourt
:
export ALL_PROXY=http://proxy.example.com:8080
La domanda è come annullare limpostazione del proxy su yaourt
? In generale, come posso annullare limpostazione del valore di una variabile nella shell corrente?
Commenti
Risposta
Per rimuovere una variabile dambiente, esegui
unset ALL_PROXY
Nota che una variabile dambiente ha effetto solo in un programma e il programma esso lancia. Se imposti una variabile dambiente in una finestra della shell, non influirà sulle altre finestre della shell.
Se hai aggiunto export ALL_PROXY=…
a un file di inizializzazione, rimuovi da lì.
Puoi eseguire export
senza argomenti per vedere quali variabili di ambiente sono impostate nella shell corrente.
Ricorda che per rendere disponibile una variabile di shell ai programmi avviati da quella shell, è necessario esportarla, eseguendo export VAR
dopo lassegnazione VAR=VALUE
o combinando i due (export VAR=VALUE
).
Commenti
- Penso che ' non è essenziale che
export VAR
si verifichi dopo lassegnazione. Osserva:sh -c 'export F; F=2; sh -c "echo F2=\$F"; echo F1=$F'
stampa " F2 = 2 \ nF1 = 2 ". -
unset
è necessario anche per cancellare gli array bash associativi (ad esempio: bash " tabelle hash " o " dicts "), come spiega questo tutorial nella sezione " Cancellazione di ": artificialworlds.net/blog/2012/10/17/… .
Risposta
Per annullare limpostazione di una variabile associata in bash usa unset VARIABLE
(unset ALL_PROXY
nel tuo caso). Questo comando elimina effettivamente la variabile. Puoi anche impostare il valore di una variabile su vuoto mediante
VARIABLE=
o
VARIABLE=""
La differenza è che gli ultimi due comandi non eliminano la variabile. Puoi vedere la differenza utilizzando il flag -u
con set
per forzarlo a trattare le variabili non impostate come un errore durante la sostituzione:
/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
Nellesempio precedente, bash si lamenta di var
non è associato (dopo aver annullato il suo valore) che è lerrore previsto (nota che questo non accade nel secondo comando echo, il che significa che var
ha un valore che è empty
o null
).
Commenti
- e se io ho una variabile nel mio file script di shell e io provo quel file, quindi come faccio a annullarne limpostazione?
- @Abhinav usa
unset
nello script. si applica.
unset ALL_PROXY
$ ALL_PROXY=http://proxy.example.com:8080 yaourt
che imposterà envvar solo per il comando run . Puoi inserire tutte leFOO=bar BAZ=bat
variabili che desideri prima che il comando venga eseguito.