# Semana 5: Arquivos de início do Bash > Importante! Este material foi elaborado para ser lido em terminais e > acompanhado (e praticado) em dispositivos de desktop! ## Perguntas-chave - O que é uma *sessão do shell*? - Como restaurar os comandos customizados em novas sessões? - O que é o arquivo `~/.bashrc`? - Como reiniciar o shell sem fechar o terminal? ## Sessões do shell - Uma *sessão* é um dos tipos de agrupamentos de *processos*. - Uma *sessão do shell* é um agrupamento de processos iniciados a partir da execução de um shell. ### Processos - Processos são *estruturas de dados* carregadas na memória do sistema quando um programa é executado. - A execução de qualquer programa implica o início de um novo **processo**. - É através dos processos que o *kernel* controla a execução de programas. - Os processos são replicados como arquivos no *diretório virtual* `/proc`. ### Interatividade do shell Quanto à sua interatividade, uma sessão do shell pode ser: - **Interativa:** a pessoa utilizadora interage com o shell através de um terminal. - **Não interativa:** a pessoa utilizadora não interage com o shell (por exemplo, na execução de scripts). ### Sessões de login Sessão do shell iniciada após alguma forma de login no sistema ou iniciadas em multiplexadores de terminal. Exemplos: - Login no console TTY. - Login em sessões de shell seguro (SSH). - Sessões do Tmux ou do GNU Screen. > Para simplificar a nossa comunicação, nós traduziremos a expressão *"non > login shells"* como "sessões normais do shell". ## Arquivos de início - A relação dos arquivos utilizados para restaurar dados e configurações no início de uma sessão do shell depende do seu tipo. - Todos os shells compatíveis com o *shell Bourne* (Bash, Dash, Ash, Ksh, etc) carregarão, pelo menos, o arquivo `/etc/profile`. > **Nota:** em algumas distribuições do Bash, o arquivo `/etc/profile` contém o > comando para carregar o arquivo `/etc/bash.bashrc`, que contém dados e > configurações globais específicas do Bash. ### Arquivos carregados em sessões interativas de login do Bash - `/etc/profile` - `~/.bash_profile` (se existir). - `~/.bash_login` (se existir e `~/.bash_profile` não existir. - `~/.profile` (se `~/.bash_profile` e `~/.bash_login` não existirem. Em sessões interativas de login, o `~/.bashrc` só é carregado se isso for determinado explicitamente em `~/.bash_profile` ou em `~/.profile`, se este for o arquivo carregado. > **Nota:** o termo "carregar" refere-se à execução do conteúdo de um script > que não inicia um novo processo do shell, o que se consegue com os comandos > `.` (ponto) ou `source` (no Bash). ### Arquivos carregados em sessões interativas normais do Bash Em sessões interativas normais, apenas os arquivos `~/.bashrc` e `/etc/bash.bashrc` (se existirem) serão carregados, pois é presumido que elas herdarão os dados exportados de uma sessão de login anterior. ### Arquivos carregados em sessões não interativas do Bash Em sessões não ineterativas, os dados e configurações são aqueles que tiverem sido exportados da sessão do shell onde a sessão não interativa foi iniciada. ## O arquivo .bashrc É comum alterá-lo para incluir customizações do Bash interativo, como: - Prompt - Apelidos - Funções - Exportações de variáveis