Esta pregunta se ha hecho en superuser is-there-a-way-to-reload-environment-variables-in-emacs , pero no se dio una buena solución.
Estoy usando EmacsClient con a menudo más de 30 buffers abiertos, si cambio una variable de entorno en el shell, necesito salir de EmacsClient (y volver a abrir todos los buffers) o tengo que configurar manualmente la variable de entorno también en Emacs. Me resulta molesto que no pueda actualizar las variables de entorno fácilmente en Emacs. ¿Alguna sugerencia?
emacsclient
environment
Håkon Hægland
fuente
fuente

Respuestas:
exec-path-from-shell proporciona el
exec-path-from-shell-copy-envcomando, que le permite copiar el valor de las variables de entorno a las sesiones de Emacs. Por ejemplo,M-x exec-path-from-shell-copy-env RET FOOestablece el valor de$FOOen Emacs también.Tenga en cuenta que
exec-path-from-shell-copy-envgenera un nuevo shell para extraer el valor de la variable de entorno. Por lo tanto, solo funcionará para las variables que establezca en sus archivos de configuración de shell (por ejemplo.bashrc), pero no para las variables que solo se configuran en una sesión de shell en ejecuciónexport. La extracción de estas variables es generalmente imposible sin hacks enrevesados que inspeccionan/proc/o API similar para ejecutar procesos.fuente
Como solución alternativa, se puede usar lo siguiente (Linux, Bash):
printenv -0 > env.txtdesde la ventana de terminal Bash,Actualizar
Resulta que esto se puede hacer de manera más elegante usando la
--evalopción delemacsclientcomando: Definir un script Bashupdate_emacs_env:donde
server_nameestá el nombre de su servidor Emacs, ymy-update-enves una función definida por su~/.emacsarchivo:Ahora puede simplemente escribir
update_emacs_envdesde la línea de comandos del shell para actualizar las variables de entorno de Emacs.fuente
sourceel .bashrc, .bash_profile, etc.?export VAR=valueSolía usar esto:
Le permite exportar una variable con nombre, por ejemplo:
fuente