Veja esta postagem no meu blog .
Depois de passar algum tempo solucionando um problema no trabalho, decidi montar uma explicação rápida sobre os diferentes tipos de shells e quais arquivos de inicialização cada um deles chama.
Tipos de casca
Shells de login
Um shell de login (também um shell interativo) é o primeiro processo executado sob sua ID de usuário quando você efetua login para uma sessão interativa.
O Bash executa os seguintes scripts no login:
- / etc / profile
- O primeiro encontrado do perfil ~ / .bash, ~ / .bash login, ~ / .profile
Cascas Interativas
Um shell interativo lê comandos da entrada do usuário em um tty. Entre outras coisas, esse shell lê arquivos de inicialização na ativação, exibe um prompt e ativa o controle de tarefas por padrão. O usuário pode interagir com o shell.
Ao entrar em um terminal interativo, o Bash também executa:
- /etc/bash.bashrc
- ~ / .bashrc
Shells não interativos
Um shell executando um script é sempre um shell não interativo.
Shells não interativos geralmente não executam arquivos de inicialização, no entanto, shells diferentes agem de maneira diferente. O Bash sempre lê ~ / .bashrc quando é invocado por rshd ou sshd, mesmo se não for interativo (mas não se for chamado como sh). Zsh sempre lê ~ / .zshenv.
Observe também que os aliases não são expandidos quando o shell não é interativo, a menos que a opção de shell expand_aliases seja definida usando shopt
shopt -s expand_aliases
Exemplos
Todos os exemplos a seguir assumem que ~ / .bashrc é chamado de ~ / .bash_profile. Cada exemplo também mostra em que ordem os arquivos de inicialização são chamados.
Exemplo 1
su [user]
Executa o shell interativo como usuário. Não carrega variáveis nem muda de diretório. <br>
1- Chama ~ / .bashrc
Exemplo 2
su - [user]
<br>su -l [user]
O mesmo que um shell de login <br>
1- Chama o perfil
~ / .bash <br> 2- Chama o perfil ~ / .bashrc (do perfil .bash )
Exemplo 3
sudo -i -u [user]
Executa um shell de login por padrão <br>
1- Chama o perfil
~ / .bash <br> 2- Chama o perfil ~ / .bashrc (do perfil .bash )
Exemplo 4
sudo -i -u [user] /bin/bash
Executa um shell de login conforme especificado <br>
1- Chama o perfil
~ / .bash <br> 2- Chama o ~ / .bashrc (do perfil .bash ) <br>
3- Chama o ~ / .bashrc
Exemplo 5
sudo -i -u [user] /bin/bash --norc
Executa um shell de login e não carrega ~ / .bashrc <br>
1- Chama o perfil
~ / .bash <br> 2- Chama ~ / .bashrc (do perfil .bash )
Exemplo 6
sudo -i -u [user] /bin/bash --rcfile [file]
Executa um shell de login e carrega o [arquivo] especificado em vez de ~ / .bashrc <br>
1- Chama o perfil
~ / .bash <br> 2- Chama o ~ / .bashrc (do perfil .bash ) <br>
3- Chama [ Arquivo]