Acredito que essa pergunta possa ajudar a entender um pouco: Diferença entre o Login Shell e o Non-Login Shell?
Eu apenas responderei pela minha experiência. Se você usar um shell de login interativo, como o bash, ele irá ler / source ~ / .bash_profile quando você fizer o login. Qualquer novo sub-shell que você abrir dentro dessa sessão herdará essas configurações e, além disso, irá fornecer a fonte ~ / .bashrc. É por isso que, em geral, as pessoas colocam suas variáveis de ambiente em .bash_profile e outras coisas como aliases ou o tema de prompt em .bashrc.
Se, no entanto, você usar um gerenciador de exibição para fazer login, por exemplo, lightdm, ele não usa o .bash_profile quando você faz o login. Em vez disso, ele geralmente lê ~ / .xprofile, e qualquer terminal que você iniciar, então, só irá originar ~ / .bashrc (~ / .bash_profile nunca é originado neste caso)
Algumas pessoas criam um arquivo ~ / .profile ou ~ / .env com todas as variáveis de ambiente e configurações globais, e obtêm isso de ~ / .bash_profile, ~ / .xprofile, ~ / .zprofile, etc., para fazer comutação entre shells de login ou gerenciador de exibição mais fácil. Então você ainda pode colocar coisas específicas do shell / x em seus respectivos arquivos. Por exemplo, meu ~ / .xprofile é simplesmente
source ~/.env
volumeicon &