.bash_profile o .bashrc para shell en emacs?

11

Escribí un alias para un comando enorme y lo almacené, .bash_profiley para mi sorpresa, emacs no tomó el alias que escribí .bash_profile. Después de buscar en Internet, creé un .bashrcarchivo en mi $ HOME con el comando alias y solo después de que emacs recogió el alias. Estoy confundido porque terminal.app toma el alias .bash_profilepero emacs solo toma el alias en .bashrc.

Estaba corriendo M-x shelly estoy en macOS. ¿Alguien puede explicarme cuál es la relación con emacs y .bashrc& .bash_profile.

Además , ¿cómo puedo hacer que Emacs lea mi .bash_profileademás .bashrc?

Chakravarthy Raghunandan
fuente
1
¿Cómo conseguiste que Emacs recogiera tus .bashrcalias? Estoy preguntando esto porque mi Emacs (y aparentemente otros) no lo hace por defecto.
Arch Stanton
@ArchStanton ver @Vera Johanna responder a esta pregunta. Ese es el mismo método que utilicé. Aunque ahora estoy usando en zshlugar de bash :)
Chakravarthy Raghunandan

Respuestas:

14

Este es el comportamiento correcto. .bash_profilees para los llamados shells de inicio de sesión. Al igual que cuando se conecte a su ordenador en modo de texto, o en un emulador de terminal a otro ordenador a través de ssho telnet, o ...

.bashrcestá destinado a shells sin inicio de sesión, como cuando ya ha iniciado sesión y comienza un nuevo xterm, o en este caso el shellmodo emacs .

Por lo general, también .bash_profilecontiene los comandos para leer en .bashrc:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

así que .bashrcse lee en cada inicio.


Entonces, los alias pertenecen .bashrc; También es habitual crear un separado .bash_aliasese incluirlo a .bashrctravés de la misma construcción:

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi
Vera Johanna
fuente
11

Además de los puntos hechos por @pingi, también puede usar un archivo de configuración separado que se cargará solo para el shell de emacs ( M-x shell):

Desde la página del manual (emacs) Interactive Shell :

Emacs envía al nuevo shell el contenido del archivo '~ / .emacs_SHELLNAME' como entrada, si existe, donde SHELLNAME es el nombre del archivo desde el que se cargó el shell. Por ejemplo, si usa bash, el archivo que se le envía es '~ / .emacs_bash'. Si no se encuentra este archivo, Emacs intenta con '~ / .emacs.d / init_SHELLNAME.sh'.

Esto es útil si desea utilizar un formato de solicitud de shell diferente dentro de Emacs, o para definir funciones para pasar archivos a emacsclient.

Tyler
fuente