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-env
comando, 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 FOO
establece el valor de$FOO
en Emacs también.Tenga en cuenta que
exec-path-from-shell-copy-env
genera 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.txt
desde la ventana de terminal Bash,Actualizar
Resulta que esto se puede hacer de manera más elegante usando la
--eval
opción delemacsclient
comando: Definir un script Bashupdate_emacs_env
:donde
server_name
está el nombre de su servidor Emacs, ymy-update-env
es una función definida por su~/.emacs
archivo:Ahora puede simplemente escribir
update_emacs_env
desde la línea de comandos del shell para actualizar las variables de entorno de Emacs.fuente
source
el .bashrc, .bash_profile, etc.?export VAR=value
Solía usar esto:
Le permite exportar una variable con nombre, por ejemplo:
fuente