bash
age de maneira diferente, seja um shell ou uma linguagem de programação normal (como perl
ou python
).
Por design, as configurações em ~/.bash_profile
, ~/.bashrc
etc. são para que os usuários definam as coisas quando bash
desempenham o papel de um shell (shell de login, shell interativo). Pense no ambiente que você possui em um xterm
(shell interativo) ou em ssh
sessões (shell de login) ou em consoles (shell de login).
Por outro lado, bash
també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 bash
programa, ele / ela não gosta de fornecer o usuário ~/.bash_profile
automaticamente. É um programa normal, não um shell. Um programa normal (incluindo bash
programas) seria naturalmente herdar as configurações do evironement de trabalho atual (shell), mas não definir -los.
Se escrevermos um programa para cron
in bash
- ele simplesmente será escrito bash
; na verdade, podemos escrever em python
ou perl
ou 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 bash
como 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_profile
se 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 bash
como algo que tem dois papéis: linguagem shell e programação . Então tudo será muito mais fácil de entender.
.bashrc
tem uma linha que impede sua execução em shells não interativos.