Usted puede tratar de añadir algo así como a su .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)))
Dependiendo de si se ha configurado las variables env en .bash_profile
o .bashrc
se podría necesitar ajustar un poco este fragmento. El ejemplo es para la variable PATH
, que es un poco más especial (ya que también debe establecer exec-path
en Emacs), pero puede extenderse para trabajar con variables arbitrarias; podría tener una lista de variables que deben leerse desde .bashrc
y configúralo en Emacs.
No estoy seguro de si está utilizando OS X o GNU/Linux. Iniciar Emacs desde la barra de menús de la GUI en Linux generalmente dará como resultado un Emacs que no tiene el mismo PATH
que uno lanzado desde la línea de comando. Este problema se remonta a las primeras secuencias de comandos de Xsession xdm
, y aunque son bastante fáciles de corregir (básicamente se usa una secuencia de comandos Xsessionwrapper
que hace exec $SHELL -c Xsession
para ejecutar la consola antes de ejecutar la Xsession del usuario), nadie se ha molestado en hacerlo en un tiempo (y dudo que alguien lo haga). Hasta donde sé, el problema está presente incluso en descendientes de xdm modernos como kdm
y gdm
.
En OS X, el manejo de las variables env es otro problema por completo y para obtener las variables ENV normalmente se tiene que ejecutar Emacs desde la línea de comando como este /Applications/Emacs.app/Contents/MacOS/Emacs
o jugar con ~/.MacOSX/environment.plist
. Sin embargo, el fragmento de código que he proporcionado debería cubrirlo en ambos casos.
actualización
Recientemente este proceso fue facilitado por la extensión exec-path-from-shell. Establece los emacs $PATH
de más o menos la misma manera, pero usar una extensión generalmente es preferible a hackear la solución usted mismo.
Esta resolver mi problema con Flymake no usar el Perl correcto desde perlbrew. A diferencia de perlbrew-mini.el – titanofold
_exec-path-from-shell_ es excelente y resolvió mi problema con _ensime_ que no pudo iniciarse y arrojó el error 'type type incorrecto stringp nil'. – cyrillk
¿Por qué usa split-string-and-unquote en lugar de split-string? –