Come aggiungere variabili di ambiente?

218

Sto usando Ubuntu 11.04. Uso il terminale per avviare una sessione bash e desidero aggiungere una variabile di ambiente:

[email protected]:~$ env THEVAR=/example

Ma non funziona. Mostra tutte le variabili con THEVAR che è l'ultima, ma un'altra chiamata a env non mostra più THEVAR - env | grep THEVAR non restituisce nulla.

Allo stesso modo, gli script con esportazione ( export THEVAR=/example ) o altre assegnazioni di variabili ( THEVAR=/example ) non aggiungono la variabile d'ambiente.

So che sto facendo qualcosa di sbagliato, so che dovrebbe essere qualcosa di semplice, ma proprio non riesco a trovare cosa.

UPDATE: Il vero significato della mia domanda era questo: link

(In ogni caso, sceglierò la risposta più votata e lascerò il titolo modificato: non era quello che stavo chiedendo)

env esegue un programma in un ambiente modificato, quindi elimina tutte le modifiche.

    
posta huff 27.08.2011 - 02:22

5 risposte

350

Per impostare la variabile solo per la shell corrente:

VARNAME="my value"

Per impostarlo per la shell corrente e tutti i processi avviati dalla shell corrente:

export VARNAME="my value"      # shorter, less portable version

Per impostarlo in modo permanente per tutte le future sessioni di bash aggiungi tale linea al tuo file .bashrc nella tua directory $HOME .

Per impostarlo in modo permanente e a livello di sistema (tutti gli utenti, tutti i processi) aggiungi la variabile impostata in / etc / environment:

sudo -H gedit /etc/environment

Questo file accetta solo assegnazioni di variabili come:

VARNAME="my value"

Non utilizzare la parola chiave export qui.

Devi disconnetterti dall'attuale utente e riconnetterti in modo che le modifiche alle variabili d'ambiente avvengano.

    
risposta data Michał Šrajer 27.08.2011 - 09:50
21

Per impostare una variabile d'ambiente una volta, usa il comando export nel prompt, non in uno script di shell:

$ export THEVAR=/example

La variabile verrà impostata per il resto della sessione della shell o fino a quando non viene impostata.

Per impostare ogni volta una variabile d'ambiente, usa il comando export nel file .bashrc (o il file di inizializzazione appropriato per la tua shell).

Per impostare una variabile di ambiente da uno script, utilizzare il comando export nello script e quindi source lo script. Se esegui lo script non funzionerà.

Per una spiegazione della differenza tra sourcing ed esecuzione vedi questa risposta: link

    
risposta data lesmana 27.08.2011 - 09:20
15

Per aggiungere in modo permanente una nuova variabile d'ambiente in Ubuntu (testato solo in 14.04), usa i seguenti passi:

  1. Apri un terminale (premendo Ctrl Alt T )
  2. sudo -H gedit /etc/environment
  3. digita la tua password
  4. Modifica il file di testo appena aperto:
    per esempio. se vuoi aggiungere FOO=bar , scrivi semplicemente FOO=bar in una nuova riga
  5. Salva
  6. Una volta salvati, disconnettiti e accedi di nuovo.
  7. Le modifiche richieste sono state apportate.
risposta data user355501 07.12.2014 - 09:45
3

Per fare in modo che l'ambiente / var cambi in modo permanente dopo che lo script è stato completato, devi usare source ./script.sh o la notazione abbreviata per source, ".", come . ./script.sh

Source eseguirà i comandi nello script come se li avessi digitati in ... quindi cambia alcuni aspetti dello script, come l'uscita ... quindi se lo script controlla qualcosa e decide di uscire se falso, ad esempio, chiamando exit 0 , terminerà la sessione corrente di terminale / shell.

    
risposta data m0bl 16.03.2018 - 16:09
1

Se stai facendo le cose tramite script, un modo semplice per impostare permanentemente la variabile di ambiente è messo sotto la dichiarazione nel tuo script,

if [[ ! -d "$MyVar" ]]; then 
    export MyVar="abc"
    echo 'export MyVar="abc"' >> ~/.bashrc
fi

Se hai bisogno di valutare espressioni come pwd, puoi usare questo, per esempio,

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
    
risposta data ShitalShah 12.07.2017 - 04:06

Leggi altre domande sui tag