Esta pergunta já tem uma resposta aqui:
- Por que o .bashrc não é executado automaticamente? 13 respostas
Eu encontrei muitas pessoas descobrindo por que instruções semelhantes a esta:
Put X to your ~/.bashrc and you can do Y
não trabalha
Sempre acontece que os arquivos de inicialização do bash do Mac OS X (ou o próprio Bash do Mac) não originam arquivos ~ / .bashrc, no shell de login ou em um shell gerado no sistema de janelas - como o aplicativo Terminal no Mac OS X)
Por que isso, quando todos os outros sistemas Unix-like com Bash com os quais trabalhei antes fizeram isso?
PS:
Eu descobri o que o próprio Bash diz sobre arquivos de inicialização (o que pode ser útil):
Quando o Bash é chamado como um shell de login interativo ou como um shell não interativo com a opção --login, ele primeiro lê e executa comandos do arquivo / etc / profile, se esse arquivo existir. Depois de ler esse arquivo, ele procura ~ / .bash_profile, ~ / .bash_login e ~ / .profile, nessa ordem, e lê e executa comandos do primeiro que existe e é legível. A opção --noprofile pode ser usada quando o shell é iniciado para inibir esse comportamento.
Fonte: http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files
fonte
~/.bash_profile
é executado, mas não~/.bashrc
. Estranho.Respostas:
Por padrão, no OSX, o terminal inicia uma sessão de logon para ler .bash_profile etc. (o processo de login da GUI que solicita seu nome e senha não usa scripts de shell e não inicia nenhum shell, tudo é feito no launchd e na área de trabalho)
Em outros Unices, o xterm executa um shell sem login por padrão para que eles leiam .bashrc, pois os scripts que apresentam sua senha etc. no login chamam a sessão de login e todos os terminais são subprocessos e herdam o ambiente do shell.
No documento GNU a que você se referiu
fonte
bash
lê apenas.bashrc
para shells que não são de login :Quando o Terminal inicia
bash
como um shell de login (executew
para verificar se asbash
instâncias são executadas como-bash
),.bashrc
nunca é lido automaticamente.fonte