Come si disinserisce una variabile dalla riga di comando?


80

Ho provato il seguente comando per attivare il proxy yaourt:

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

La domanda è: come disattivare il proxy yaourt? In generale, come posso annullare il valore di una variabile nella shell corrente?


7
Provaunset ALL_PROXY
coffeMug

@coffeMug potrebbe pure fare che in una risposta, si potrebbe anche prendere in considerazione di rubare alcune informazioni da qui: stackoverflow.com/a/12263914/1081936
terdon

oltre alla risposta accettata, se c'è un comando che esegui spesso che utilizza una variabile di ambiente che preferiresti non impostare o modificare per il resto della sessione della shell, puoi eseguirla in questo modo: $ ALL_PROXY=http://proxy.example.com:8080 yaourtimposterà envvar solo per il comando eseguito. È possibile inserire tutte le FOO=bar BAZ=batvariabili che si desidera prima dell'esecuzione del comando.
Solo il

Risposte:


113

Per rimuovere una variabile di ambiente, eseguire

unset ALL_PROXY

Si noti che una variabile di ambiente ha effetto solo in un programma e nel programma che avvia. Se si imposta una variabile di ambiente in una finestra della shell, non influisce su altre finestre della shell.

Se hai aggiunto export ALL_PROXY=…un file di inizializzazione, rimuovilo da lì.

È possibile eseguire exportsenza argomenti per vedere quali variabili di ambiente sono impostate nella shell corrente.

Ricorda che per rendere disponibile una variabile di shell per i programmi avviati da quella shell, devi esportarla, eseguendo export VARdopo l'assegnazione VAR=VALUEo combinando i due ( export VAR=VALUE).


19

Per disinserire una variabile associata in bash usa unset VARIABLE( unset ALL_PROXYnel tuo caso). Questo comando cancella effettivamente la variabile. Puoi anche impostare il valore di una variabile su vuoto di

VARIABLE=

o

VARIABLE=""

La differenza è che questi ultimi due comandi non eliminano la variabile. Puoi vedere la differenza usando il -uflag con setper 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

Nell'esempio sopra, bash si lamenta che varnon è associato (dopo aver impostato il suo valore) che è l'errore previsto (si noti che ciò non accade nel secondo comando echo, nel senso che varha un valore che è emptyo null).


cosa succede se ho una variabile nel mio file di script della shell e provoco quel file, come lo annullerò?
Abhinav,

@Abhinav usa unsetnello script. Lo stesso vale.
coffeMug
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.