Pesquisa de site

Noções básicas sobre arquivos de inicialização do Shell e perfis de usuário no Linux


Linux é um sistema multiusuário de compartilhamento de tempo, o que significa que mais de um usuário pode fazer login e usar um sistema. E os administradores de sistema têm a tarefa de gerenciar vários aspectos de como diferentes usuários podem operar um sistema em termos de instalação/atualização/remoção de software, programas que podem executar, arquivos que podem visualizar/editar e assim por diante.

O Linux também permite que os ambientes dos usuários sejam criados ou mantidos de duas maneiras principais: usando configurações de todo o sistema (global) e específicas do usuário (pessoais). Normalmente, o método básico de trabalhar com um sistema Linux é o shell, e o shell cria um ambiente dependendo de certos arquivos que ele lê durante sua inicialização após um login bem-sucedido do usuário.

Leitura sugerida: Como definir variáveis de ambiente no Linux

Neste artigo, explicaremos os arquivos de inicialização do shell em relação aos perfis de usuário para gerenciamento de usuários locais no Linux. Informaremos onde manter funções de shell personalizadas, aliases, variáveis, bem como programas de inicialização.

Importante: Para o propósito deste artigo, focaremos no bash, um shell compatível com sh que é o shell mais popular/usado em sistemas Linux que existe.

Se você estiver usando um programa shell diferente (zsh, ash, fish etc.), leia sua documentação para saber mais sobre alguns dos arquivos relacionados sobre os quais falaremos aqui.

Inicialização do Shell no Linux

Quando o shell é invocado, ele lê certos arquivos de inicialização/inicialização que ajudam a configurar um ambiente para o próprio shell e para o usuário do sistema; isto é, funções predefinidas (e personalizadas), variáveis, aliases e assim por diante.

Existem duas categorias de arquivos de inicialização lidos pelo shell:

  • arquivos de inicialização de todo o sistema – contêm configurações globais que se aplicam a todos os usuários do sistema e geralmente estão localizados no diretório /etc. Eles incluem: /etc/profiles e /etc/bashrc ou /etc/bash.bashrc.
  • arquivos de inicialização específicos do usuário – armazenam configurações que se aplicam a um único usuário no sistema e normalmente estão localizadas no diretório inicial dos usuários como arquivos de ponto. Eles podem substituir as configurações de todo o sistema. Eles incluem: .profiles, .bash_profile, .bashrc e .bash_login.

Novamente, o shell pode ser invocado de três modos possíveis:

1. Shell de login interativo

O shell é invocado depois que um usuário faz login com sucesso no sistema, usando /bin/login, após ler as credenciais armazenadas no arquivo /etc/passwd.

Quando o shell é iniciado como um shell de login interativo, ele lê o /etc/profile e seu equivalente específico do usuário ~/.bash_profile.

2. Shell interativo sem login

O shell é iniciado na linha de comando usando um programa shell, por exemplo $/bin/bash ou $/bin/zsh. Também pode ser iniciado executando o comando /bin/su.

Além disso, um shell interativo sem login também pode ser invocado com um programa de terminal como konsole, terminator ou xterm de dentro de um ambiente gráfico.

Quando o shell é iniciado neste estado, ele copia o ambiente do shell pai e lê o arquivo ~/.bashrc específico do usuário para obter instruções adicionais de configuração de inicialização.

su
ls -la

3. Shell não interativo

O shell é invocado quando um script de shell está em execução. Neste modo, ele processa um script (conjunto de shell ou comandos/funções genéricos do sistema) e não requer entrada do usuário entre os comandos, a menos que contrário. Ele opera usando o ambiente herdado do shell pai.

Compreendendo os arquivos de inicialização do Shell para todo o sistema

Nesta seção, daremos mais detalhes sobre os arquivos de inicialização do shell que armazenam configurações para todos os usuários no sistema e incluem:

O arquivo /etc/profile – armazena configurações de ambiente de todo o sistema e programas de inicialização para configuração de login. Todas as configurações que você deseja aplicar aos ambientes de todos os usuários do sistema devem ser adicionadas neste arquivo.

Por exemplo, você pode definir a variável de ambiente global PATH aqui.

cat /etc/profile

Nota: Em certos sistemas como o RHEL/CentOS 7, você receberá avisos como “Não é recomendado alterar este arquivo a menos que você saiba o que você está fazendo. É muito melhor criar um script de shell .sh personalizado em /etc/profile.d/ para fazer alterações personalizadas em seu ambiente, pois isso evitará a necessidade de mesclar atualizações futuras”.

O diretório /etc/profile.d/ – armazena scripts de shell usados para fazer alterações personalizadas em seu ambiente:

cd /etc/profile.d/
ls  -l 

O arquivo /etc/bashrc ou /etc/bash.bashrc – contém funções e aliases para todo o sistema, incluindo outras configurações que se aplicam a todos os usuários do sistema.

Se o seu sistema tiver vários tipos de shells, é uma boa ideia colocar configurações específicas do bash neste arquivo.

cat /etc/bashrc

Compreendendo os arquivos de inicialização do Shell específicos do usuário

A seguir, explicaremos mais sobre os arquivos de ponto de inicialização do shell (bash) específico do usuário, que armazenam configurações para um usuário específico no sistema, estão localizados no diretório inicial do usuário e incluem:

ls -la

O arquivo ~/.bash_profile – armazena configurações específicas do ambiente do usuário e dos programas de inicialização. Você pode definir sua variável de ambiente PATH personalizada aqui, conforme mostrado na captura de tela abaixo:

cat ~/.bash_profile

O arquivo ~/.bashrc – este arquivo armazena aliases e funções específicas do usuário.

cat ~/.bashrc

O arquivo ~/.bash_login – contém configurações específicas que normalmente só são executadas quando você faz login no sistema. Quando ~/.bash_profile estiver ausente, este arquivo será lido pelo bash.

O arquivo ~/.profile – este arquivo é lido na ausência de ~/.bash_profile e ~/.bash_login; ele pode armazenar as mesmas configurações, que também podem ser acessadas por outros shells no sistema. Como falamos principalmente sobre o bash aqui, observe que outros shells podem não entender a sintaxe do bash.

A seguir, também explicaremos dois outros arquivos importantes específicos do usuário que não são necessariamente arquivos de inicialização do bash:

O arquivo ~/.bash_history – bash mantém um histórico de comandos que foram inseridos por um usuário no sistema. Esta lista de comandos é mantida no diretório inicial do usuário no arquivo ~/.bash_history.

Para visualizar esta lista, digite:

history 
or 
history | less

O arquivo ~/.bash_logout – não é usado para inicialização do shell, mas armazena instruções específicas do usuário para o procedimento de logout. Ele é lido e executado quando um usuário sai de um shell de login interativo.

Um exemplo prático seria limpar a janela do terminal ao sair. Isto é importante para conexões remotas, que deixarão uma janela limpa após fechá-las:

cat bash_logout 

Para obter informações adicionais, verifique o conteúdo desses arquivos de inicialização do shell em várias distros Linux e também leia a página de manual do bash:

É tudo por agora! Neste artigo, explicamos os arquivos de inicialização/inicialização do shell no Linux. Use o formulário de comentários abaixo para nos responder.