.bash_profile o .bashrc per shell in emacs?


11

Ho scritto un alias per un comando enorme e l'ho archiviato .bash_profilee con mia sorpresa, emacs non ha raccolto l'alias in cui ho scritto .bash_profile. Dopo alcune ricerche su Internet, ho creato un .bashrcfile nel mio $ HOME con il comando alias e solo dopo che emacs ha raccolto l'alias. Sono confuso perché terminal.app prende l'alias .bash_profilema emacs accetta l'alias solo in .bashrc.

Stavo correndo M-x shelle sono su macOS. Qualcuno può spiegarmi qual è il rapporto con Emacs e .bashrc& .bash_profile.

Più precisamente, come posso fare in modo che Emacs legga il mio .bash_profileoltre a .bashrc?


1
Come hai fatto ad Emacs raccogliere i tuoi .bashrcalias? Lo sto chiedendo perché i miei Emacs (e apparentemente quelli degli altri) non lo fanno per impostazione predefinita.
Arch Stanton,

@ArchStanton vedi @Vera Johanna rispondere a questa domanda. Questo è lo stesso metodo che ho usato. Anche se ora sto usando zshinvece di bash :)
Chakravarthy Raghunandan

Risposte:


14

Questo è il comportamento corretto. .bash_profileè per le cosiddette shell di login. Come quando si accede al computer in modalità testo o in un emulatore di terminale su un altro computer tramite ssho telneto ...

.bashrcè pensato per shell senza login, come quando si è già connessi e si avvia un nuovo xterm, o in questo caso la shellmodalità emacs .

Di solito .bash_profilecontiene anche i comandi da leggere in .bashrc:

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

quindi .bashrcviene letto ad ogni avvio.


Quindi, gli alias appartengono .bashrc; è anche consuetudine creare un separato .bash_aliasese includerlo .bashrctramite lo stesso costrutto:

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

11

Oltre ai punti fatti da @pingi, puoi anche usare un file di configurazione separato che verrà caricato solo per la shell emacs ( M-x shell):

Dalla pagina del manuale (emacs) Interactive Shell :

Emacs invia alla nuova shell il contenuto del file '~ / .emacs_SHELLNAME' come input, se esiste, dove SHELLNAME è il nome del file da cui è stata caricata la shell. Ad esempio, se si utilizza bash, il file inviato ad esso è '~ / .emacs_bash'. Se questo file non viene trovato, Emacs prova con '~ / .emacs.d / init_SHELLNAME.sh'.

Ciò è utile se si desidera utilizzare un formato di prompt della shell diverso all'interno di Emacs o per definire le funzioni per il passaggio dei file all'emacsclient.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.