/ / Come modificare / impostare effettivamente le variabili di ambiente da emacs - linux, bash, emacs, variabili di ambiente

Come modificare / impostare effettivamente le variabili di ambiente da emacs - linux, bash, emacs, variabili di ambiente

Nel mio guscio ho fatto: export BLA=foo e poi lo faccio echo $BLA e io vedo foo come previsto. Quindi carico e emacs M-! per un comando di shell e fare echo $BLA ed è impostato su qualcos'altro, bar. Allora corro M-x setenv e darlo BLA e foo alle istruzioni ma quando faccio l'eco vedo ancora bar. Perché dovrebbe essere e come posso cambiarlo? Sto cercando di farlo per alcune variabili d'ambiente in base alle quali voglio eseguire M-x compile

risposte:

6 per risposta № 1

setenv modificherà l'ambiente per i processi emacs di avvio dopo tu imposti il ​​valore. I processi figlio in esecuzione non saranno interessati.

Quindi, facendo a (setenv "FOO" "bar") e poi M-x shell (fornisce ancora una shell non funzionante) produrrà una shell con la variabile di ambiente "FOO" impostata su "bar".


1 per risposta № 2

Il tuo guscio nel quale hai iniziato l'Emacsconsegna una copia del suo ambiente al suo processo figlio (l'Emacs), questo è il modo in cui il valore viene trasmesso dalla shell a Emacs.Tutte le modifiche che Emacs esegue con il suo ambiente ereditato influenzeranno solo l'ambiente del processo Emacs . Non c'è modo che l'ambiente di Emacs possa influenzare l'ambiente della shell.

Se hai bisogno di restituire le informazioni alla shell, devi usare diverse tecniche come i file temporanei, named pipe, socket, ...

Se vuoi solo controllare l'ambiente dell'Emacs stesso, usa M-x getenv guardare le variabili, o usare M-! echo $BLA. Se anche questo mostra qualcos'altro, allora probabilmente hai uno speciale BLA che viene automaticamente impostato su sth dopo ogni comando, o che non è affatto scrivibile RANDOM o simili.