2009-09-08 12 views
10

Tengo algunos alias y funciones definidas en ~/.bashrc.Los comandos de .bashrc no están disponibles en Emacs

que inicie Emacs desde una ventana de terminal usando emacs -nw

Cuando ejecuto M-x shell-command, los alias y funciones de ~/.bashrc no están disponibles, sino dar un "comando no encontrado".

He buscado en Google un poco, pero todas las publicaciones que encuentro dicen, si las entiendo correctamente, que ~/.bashrc es el lugar donde debería funcionar (en lugar de ~/.profile o ~/.bash_profile)

¿Qué me estoy perdiendo?

Respuesta

8

Alias ​​están disponibles sólo en shell interactivo - una instantánea de la página de manual de bash:

Alias ​​no se expanden cuando el proyectil no es interactivo, a menos que los expand_aliases shell opción se establece usando shopt (vea la descripción de shopt bajo COMANDOS DE SHELL BUILTIN a continuación).

2

Si se inicia Emacs de una cáscara interactiva (en la que .bashrc, etc han ejecutado), entonces los comandos de su .bashrc debe estar disponible tanto para shell-command y shell, al menos eso es lo que funciona para mí .

Pero sí, como dice la otra respuesta, no hay una manera real de obtener un entorno .bashrc en emacs. Hay documentación sobre un archivo .emacs_bash, pero eso nunca funcionó para mí.


De acuerdo, leyó mal su pregunta aquí. Si busca funciones y alias en lugar de comandos cambiando rutas en .bashrc, el problema es la falta de interactividad. Supongo que puedes cambiar el argumento predeterminado a shell-command (mira explicit-bash-args) para hacer que bash sea interactivo, pero eso probablemente tenga consecuencias imprevistas.

Cuestiones relacionadas