bash age de forma diferente, seja um shell ou uma linguagem de programação (como perl ou python ).
Por design, essas configurações em ~/.bash_profile , ~/.bashrc , etc. são para os usuários definirem as configurações quando bash reproduzir o roll de um shell (shell de login, shell interrativo). Pense no ambiente que você tem em um xterm (shell interrativo) ou em ssh sessions (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 em systemd - o que requer um estilo diferente de trabalho. Por exemplo, quando um desenvolvedor escreve um script do sistema ou um programa bash , ele / ela provavelmente não irá originar o ~/.bash_profile definido pelo usuário automaticamente. É um programa normal, não um shell. Um programa normal (incluindo programas bash ) naturalmente configuraria a configuração em um ambiente de trabalho atual (shell), mas não os definiria .
Se escrevermos um programa para cron em bash - é apenas por acaso que está escrito em bash ; na verdade, podemos escrevê-lo em python ou perl ou qualquer outra linguagem de programação - então, podemos ter uma opção para fontes bash ' ~/.bash_profile (leia: configuração do shell do usuário, que acontece seja a mesma linguagem da 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 realmente não funciona ao escrever programas para uso público.
Então, você pode pesquisar ~/.bash_profile se achar que funciona. Mas, aqui, não é sobre se somos capazes de criar um arquivo, é sobre como as coisas devem funcionar no sistema: o conceito de design . Resumindo: devemos ver bash como algo com 2 rolos: linguagem de shell e programação . Então tudo ficará claro, mais fácil de entender.