.bash_profile ou .bashrc para shell no emacs?

11

Eu escrevi um apelido para um comando enorme e o armazenei .bash_profilee, para minha surpresa, o emacs não pegou o apelido em que escrevi .bash_profile. Após algumas pesquisas na internet, criei um .bashrcarquivo no meu $ HOME com o comando alias e somente depois disso o emacs pegou o alias. Estou confuso porque o terminal.app usa o apelido de, .bash_profilemas o emacs leva o apelido apenas no .bashrc.

Eu estava correndo M-x shelle estou no macOS. Alguém pode me explicar qual é a relação com emacs e .bashrc& .bash_profile.

Mais ao ponto, como posso obter o Emacs para ler o meu .bash_profilealém .bashrc?

Chakravarthy Raghunandan
fonte
1
Como você conseguiu o Emacs pegar seus .bashrcpseudônimos? Estou perguntando isso porque meu Emacs (e aparentemente outros) não faz isso por padrão.
Arch Stanton
@ArchStanton, veja @Vera Johanna responder a esta pergunta. Esse é o mesmo método que eu usei. Embora agora eu estou usando zshem vez do bash :)
Chakravarthy Raghunandan

Respostas:

14

Esse é o comportamento correto. .bash_profileé para os chamados shells de login. Como quando você login para o computador em modo de texto ou em um emulador de terminal para um computador diferente via sshou telnetou ...

.bashrcé destinado a shells que não são de login, como quando você já está logado e inicia um novo xterm ou, neste caso, o shellmodo emacs .

Geralmente, o .bash_profilecontém comandos para ler .bashrctambém:

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

então o .bashrcé lido em toda inicialização.


Portanto, os aliases pertencem a .bashrc; também é comum criar um separado .bash_aliasese incluí-lo .bashrcatravés da mesma construção:

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

Além dos pontos mencionados pelo @pingi, você também pode usar um arquivo de configuração separado que será carregado apenas para o emacs shell ( M-x shell):

Na página do manual (emacs) Shell interativo :

O Emacs envia ao novo shell o conteúdo do arquivo '~ / .emacs_SHELLNAME' como entrada, se existir, onde SHELLNAME é o nome do arquivo do qual o shell foi carregado. Por exemplo, se você usar o bash, o arquivo enviado a ele será '~ / .emacs_bash'. Se esse arquivo não for encontrado, o Emacs tentará com '~ / .emacs.d / init_SHELLNAME.sh'.

Isso é útil se você deseja usar um formato de prompt de shell diferente no Emacs ou definir funções para passar arquivos para o emacsclient.

Tyler
fonte