Non si può farlo da Python, ma alcuni abili trucchi di bash possono fare qualcosa di simile. Il ragionamento di base è questo: le variabili di ambiente esistono in uno spazio di memoria per processo. Quando un nuovo processo viene creato con fork() eredita le variabili d'ambiente del suo genitore. Quando si imposta una variabile di ambiente nella shell (per esempio bash) come questo:
export VAR="foo"
Quello che stai facendo sta dicendo bash per impostare la variabile VAR nel suo spazio di processo a "foo". Quando si esegue un programma, bash utilizza fork() e exec() per eseguire il programma, quindi qualsiasi cosa venga eseguita da bash eredita le variabili di ambiente bash.
Ora, si supponga di voler creare un comando bash che imposta una variabile di ambiente DATA con contenuto da un file nella directory corrente denominata ".data". In primo luogo, è necessario disporre di un comando per ottenere i dati dal file:
cat .data
che consente di stampare i dati.Ora, vogliamo creare un comando bash per impostare i dati in una variabile d'ambiente:
export DATA=`cat .data`
Questo comando prende il contenuto di .data e lo mette in un ambiente di dati variabili. Ora, se si mette che all'interno di un comando alias, si dispone di un comando bash che imposta la variabile d'ambiente:
alias set-data="export DATA=`cat .data`"
È possibile inserire il comando alias all'interno del .bashrc o .bash_profile nella vostra home directory per avere quel comando disponibile in qualsiasi nuova shell bash che si avvia.
Duplicate: http://stackoverflow.com/questions/488366/how-do-i-make-environment-variable- changes-stick-in-python, http://stackoverflow.com/questions/235435/environment-variables-in-python-on-linux –
Questo è più di un "Sembra che questo sarebbe utile. Perché non è possibile? " – physicsmichael
Ma non importa. Se dicessi che era una restrizione legale, come cambia qualcosa? Non puoi ancora farlo. Se dicessi che era un elemento del Libro metodista della disciplina, come cambia qualcosa? Non puoi ancora farlo. –