Come si annulla limpostazione di una variabile dalla riga di comando?

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

  • Prova unset ALL_PROXY
  • @coffeMug potrebbe anche trasformarlo in una risposta, potresti anche considerare di rubare alcune informazioni da qui: stackoverflow.com/a/12263914 / 1081936
  • oltre alla risposta accettata, se ' un comando che esegui spesso che utilizza una variabile di ambiente che ' d invece di non impostarlo o modificarlo per il resto della sessione della shell, puoi eseguirlo come: $ ALL_PROXY=http://proxy.example.com:8080 yaourt che imposterà envvar solo per il comando run . Puoi inserire tutte le FOO=bar BAZ=bat variabili che desideri prima che il comando venga eseguito.

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.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *