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 № 1setenv
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.