Sto eseguendo Ubuntu 11.04. Uso il terminale per avviare una sessione bash, e voglio aggiungere una variabile d'ambiente:
$r@hajt:~$ env THEVAR=/example
Ma non funziona. Mostra tutte le variabili con THEVAR come 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 di ambiente.
So che sto facendo qualcosa di sbagliato, so che dovrebbe essere qualcosa di semplice, ma non riesco a trovare cosa.
AGGIORNAMENTO: Il vero significato della mia domanda era questo: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(Comunque sceglierò la risposta più votata e lascerò il titolo modificato - non era quello che chiedevo)
env
esegue un programma in un ambiente modificato, poi elimina tutte le modifiche.
Per impostare la variabile solo per la shell corrente:
VARNAME="my value"
Per impostarla per la shell corrente e per tutti i processi avviati dalla shell corrente:
export VARNAME="my value" # shorter, less portable version
Per impostarlo permanentemente per tutte le future sessioni di bash aggiungete tale linea al vostro file .bashrc
nella vostra directory $HOME
.
Per impostarlo in modo permanente, e a livello di sistema (tutti gli utenti, tutti i processi) aggiungere la variabile set in /etc/environment:
sudo -H gedit /etc/environment
Questo file accetta solo assegnazioni di variabili come:
VARNAME="my value"
Non usare la parola chiave export
qui.
Devi fare il logout dall'utente corrente e fare di nuovo il login in modo che i cambiamenti delle variabili d'ambiente abbiano luogo.
Per impostare una variabile d'ambiente una volta sola, usate il comando export
nel prompt, non in uno script di shell:
$ export THEVAR=/example
La variabile sarà impostata per il resto della sessione di shell o fino a quando non verrà disinserita.
Per impostare una variabile d'ambiente ogni volta, usa il comando export
nel file .bashrc
(o il file di inizializzazione appropriato per la tua shell).
Per impostare una variabile d'ambiente da uno script, usa il comando export
nello script, e poi source
lo script. Se esegui lo script non funzionerà.
Per una spiegazione della differenza tra sourcing ed esecuzione vedi questa risposta: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788
Per aggiungere permanentemente una nuova variabile d'ambiente in Ubuntu (testato solo in 14.04), usate i seguenti passi:
sudo -H gedit /etc/environment
FOO=bar
, allora scrivi semplicemente FOO=bar
in una nuova riga