bashage de maneira diferente, seja um shell ou uma linguagem de programação normal (como perlou python).
Por design, as configurações em ~/.bash_profile, ~/.bashrcetc. são para que os usuários definam as coisas quando bashdesempenham o papel de um shell (shell de login, shell interativo). Pense no ambiente que você possui em um xterm(shell interativo) ou em sshsessões (shell de login) ou em consoles (shell de login).
Por outro lado, bashtambém é uma poderosa linguagem de programação - pense em muitos scripts para gerenciar serviços systemd- que requer um estilo diferente de trabalho. Por exemplo, quando um desenvolvedor está escrevendo um script do sistema ou um bashprograma, ele / ela não gosta de fornecer o usuário ~/.bash_profileautomaticamente. É um programa normal, não um shell. Um programa normal (incluindo bashprogramas) seria naturalmente herdar as configurações do evironement de trabalho atual (shell), mas não definir -los.
Se escrevermos um programa para cronin bash- ele simplesmente será escrito bash; na verdade, podemos escrever em pythonou perlou qualquer outra programação language- então podemos ter uma opção de fontes bash's ~/.bash_profile(leia-se: a criação de shell do usuário, que só acontece de ser o mesmo idioma de sua linguagem de programação):
[ -f /home/user/.bash_profile ] && . /home/user/.bash_profile
No entanto, e se esse usuário em particular não usar bashcomo seu shell? Ele / ela pode usar zsh, ksh, fish, etc. Então, essa prática não seria realmente trabalhar ao escrever programa para uso público.
Então, você pode pesquisar ~/.bash_profilese acha que funcionará. Mas, aqui, não se trata de saber se somos capazes de obter um arquivo, mas de como as coisas devem funcionar no sistema: o conceito de design . Em resumo: devemos ver bashcomo algo que tem dois papéis: linguagem shell e programação . Então tudo será muito mais fácil de entender.
.bashrctem uma linha que impede sua execução em shells não interativos.