Perfis de usuários no Linux
Qual a diferença entre .bashrc e .profile?
TL:DR
.bashrc é executado toda vez que você abre um terminal.
.profile é executado no login e pode ter uma instrução para rodar o .bashrc.
INTRODUÇÃO
Para entendermos a diferença e qual a melhor forma de configurarmos nosso sistema primeiramente precisamos estudar os seguintes conceitos:
Shell — É um programa utilizado para processar comandos e trazer os resultados do mesmo. Basicamente ele serve para interagirmos com o kernel do sistema operacional de forma mais abstrata, menos low-level.
Terminal — É um programa que roda um shell. Outrora eram equipamentos com capacidade mínima de processamento onde eram realizadas conexões a um computador remoto. Para diferenciar basta se lembrar que terminal indica o ponto final de algo por exemplo, no caso onde acontecem a entrada e saída dos dados para o computador.
Console e CLI ou Command Line — São abstrações que indicam a utilização de um terminal+shell. No Linux console pode ainda indicar terminais, 6 por padrão, implementados diretamente pelo kernel. Podemos acessá-los usando os atalhos CTRL + ALT + F/n, exemplo o /dev/tty1 pode ser acessado com CTRL + ALT + F1, enquanto o atalhos CTRL + ALT + F7 traz você de volta para o modo gráfico.
LOGIN x INTERACTIVE x NON-INTERACTIVE
Vamos lá! Parte 2
Login Shell
É um shell usado para o login. Pode ser acessado por terminal ou ssh por exemplo. Ele executa arquivos mínimos de configuração para podermos utilizar o sistema. Outro exemplo é você acessar seu console 1 ou /dev/tty1 como nos exemplos acima.
Interactive Shell
É o shell que você executa, por exemplo após o login, como por exemplo o bash. Daí você me pergunta: “Ah mas eu não executei nada após o login, estou em um shell de login ou interativo?”, a resposta é que você está em um shell de login/interativo. Outro exemplo é abrir um novo terminal.
Non-Interactive Shell
É um shell que não tem interação com o usuário. É raro de encontrar e não convém ao nosso cenário no momento.
A DIFERENÇA ENTRE .BASHRC E .PROFILE
Esses são dois dos mais famosos arquivos de configuração do sistema que utilizamos mas existem outros, quando um login shell é invocado ele roda o /etc/profile para o ambiente atual então checa por outros três arquivos:
se o /etc/profile existe ele é executado(source)se ~/.bash_profile existe ele é executado(source)
se ~/.bash_login existe ele é executado(source)
se ~/.profile existe ele é executado(source)
Quando um deles é encontrado ele deixa de buscar pelos outros.
Já o .bashrc é executado toda vez que executamos um shell interativo. Normalmente colocamos variáveis, aliases e funções aqui.
Muitas pessoas colocam uma instrução no .profile para ler o .bashrc.
REFERÊNCIAS