Si può provare ad aggiungere qualcosa di simile al vostro .emacs
:
(let ((path (shell-command-to-string ". ~/.bashrc; echo -n $PATH")))
(setenv "PATH" path)
(setq exec-path
(append
(split-string-and-unquote path ":")
exec-path)))
A seconda che hai impostato le variabili env in .bash_profile
o .bashrc
voi potrebbe aver bisogno di aggiustare leggermente questo snippet. L'esempio è per la variabile PATH
, che è un po 'più speciale (dato che è necessario impostare exec-path
in Emacs), ma può essere estesa per lavorare con variabili arbitrarie - si potrebbe avere un elenco di variabili che devono essere lette da .bashrc
e impostato su Emacs.
Non sono sicuro che tu stia utilizzando OS X o GNU/Linux. L'avvio di Emacs dalla barra dei menu della GUI in Linux comporterà in genere un Emacs che non ha lo stesso PATH
come lanciato dalla riga di comando. Questo problema risale ai primi script di Xsession xdm
e anche se sono abbastanza facili da risolvere (in pratica si utilizza uno script Xsessionwrapper
che esegue exec $SHELL -c Xsession
in modo che la shell venga eseguita prima di eseguire Xsession dell'utente), nessuno si è preoccupato di farlo in un tempo molto lungo tempo (e dubito che qualcuno lo farà). Per quanto ne so, il problema è presente anche nei discendenti moder xdm come kdm
e gdm
.
Su OS X la gestione delle variabili env è un altro problema e per ottenere le variabili ENV in genere è necessario eseguire Emacs dalla riga di comando come questa /Applications/Emacs.app/Contents/MacOS/Emacs
o giocare con ~/.MacOSX/environment.plist
. Lo snippet di codice che ho fornito dovrebbe coprirti in entrambi i casi.
Aggiornamento
Recentemente questo processo è stato facilitato dall'estensione exec-path-from-shell. Imposta emacs $PATH
più o meno allo stesso modo, ma generalmente è preferibile utilizzare un'estensione per hackerare la soluzione da soli.
fonte
2012-03-12 09:53:40
Questa risolvere il mio problema con Flymake non si utilizza la corretta Perl da perlbrew. A differenza di perlbrew-mini.el – titanofold
_exec-path-from-shell_ è ottimo e ha risolto il mio problema con _ensime_ che non è stato possibile avviare e lanciare l'errore 'type erred type stringp nil'. – cyrillk
Perché usi split-string-and-unquote anziché split-string? –