2009-06-05 28 views
13

Mi script bash init (~/.profile) contiene importantes inicializaciones, pero cada vez que uso shell-command o compile en emacs, ese archivo init no se lee, y sin esa inicialización mis comandos bash en emacs fallarán :(¿Cómo Obligo a emacs a ejecutar mi archivo de inicio para el intérprete de comandos que está usando para el comando de shell?¿Cómo hacer que el shell de emacs ejecute el archivo de inicio automáticamente?

Aclaración: No estoy hablando de Mx shell, que lee mi archivo de inicio muy bien cuando enlacé un archivo .profile a .emacs_bash.

Respuesta

22

mover sus rutinas de inicialización en el archivo de ~/.bashrc

a continuación, agregue la línea

source ~/.bashrc 

en su archivo ~/.bash_profile. Consulte el bash man page para obtener una explicación detallada de qué archivos de inicio se cargan cuando. La clave es la diferencia entre un no interactivo shell interactivo y , así como la diferencia entre un inicio de sesión y una no entrada shell.

En general, .bash_profile se ejecuta al iniciar sesión en el sistema utilizando un intérprete de órdenes mientras .bashrc se ejecuta cuando se inicia una nueva cáscara (la aplicación del terminal OS X es una excepción a esta regla ya que se ejecuta .bash_profile para cada nueva instancia terminal). Para obtener más información en forma de artículo, look here.

+1

Adjunté mi archivo .profile a .bashrc y .bash_profile. No parece funcionar todavía. ¿Empieza emacs un shell interactivo o no interactivo? También intenté agregar --login a los bash-args explícitos, y todavía no tuve suerte. – polyglot

+1

¡Ahh, ahora puedo amar mi caparazón de Emacs otra vez! ¡Gracias! : D –

+0

@DanFilimon ¡esta fue la solución completa a mi problema también! :) ¡El shell de Emacs funciona con nvm ahora! – geoyws

2

Excavando a través de la fuente elisp; parece que el comando shell en emacs solo ejecuta bash -c "command" en mi caso. La solución es iniciar emacs (emacs &) en un shell donde mi .profile ya está ejecutado (en lugar de iniciar emacs desde los menús de la GUI de mi administrador de Windows).

+0

Gracias, políglota, también funcionó emacs desde un terminal. – Upgradingdave

5

Estoy usando Mac, shell-command no ejecutó .bashrc, ni .bash_profile, busqué en Google una solución para solucionar mi problema de PATH.

poner esto en su .emacs: (setenv "camino" (-shell-comando para cuerdas "source ~/.bashrc; echo -n $ PATH"))

más detalle, ver: How to make emacs to run my ~/.bash_profile

Cuestiones relacionadas