Conhecendo variáveis e arquivos de configuração do Bash

Por Felipe Arruda

No mundo da computação, shell é nada mais do que uma interface que possibilita o acesso a serviços de um sistema operacional. No caso do Linux, um dos shells mais famosos e usados é o bash, escolha padrão da maior parte das distros. E como esse é o ambiente em que administradores de sistemas e outros usuários do Linux passam a maior parte do tempo, nada como configurá-lo para que se torne bem adaptado às suas preferências.

Um dos recursos responsáveis pela configuração do ambiente do shell são as variáveis de ambiente, que definem o comportamento de muitos aspectos do bash. Uma variável é um nome especial que está associado a um valor e, ao alterar esse valor, conseguimos alterar certas características do ambiente. Programas que fazem uso dessas variáveis também têm seu comportamento alterado de acordo com a nova configuração.

Como criar e configurar uma variável

Para criar uma variável, basta seguir a seguinte fórmula: NOMEVARIAVEL="Valor da Variável". O valor pode ser tanto número quanto texto. Por exemplo:

SITE="Canaltech"

Com essa linha, definimos o valor "Canaltech" para a variável SITE. Se quisermos acessá-la, basta fazer referência a ela com o caractere $ (cifrão) antes do nome: o comando echo $SITE, por exemplo, retornará a palavra "Canaltech".

Variáveis de ambiente

As variáveis de ambiente do bash existem independentemente de você as ter definido ou não. Elas são criadas automaticamente, assim que você faz o login no sistema, e podem ser consultadas pelo comando env:

Resultado do comando env, no Linux

Algumas dessas variáveis de ambiente são importantes e acabam sendo usadas por diversos programas, como por exemplo:

  • PATH: define diretórios de procura por programas executados no shell;
  • USER: informa o nome do usuário do shell e não pode ser alterada;
  • HOME: informa o caminho do diretório home do usuário e também não pode ser alterada;
  • PWD: diretório atual;
  • LANG: idioma preferido do usuário;
  • HISTFILESIZE: número máximo de linhas do arquivo de histórico dos comandos executados pelo bash (.bash_history);
  • PS1: aparência do prompt do shell que, por padrão, é representado pela sintaxe usuário@nome_da_máquina diretório_atual. Valor possui sintaxe própria para ser alterado;
  • DISPLAY: indica às aplicações gráficas onde elas devem ser exibidas. A edição dessa variável é útil quando você deseja executar um programa localmente, mas apresentar a imagem dele na tela de outra máquina da rede.

Com essa pequena lista você já pode deduzir, por exemplo, como realizar algumas alterações nas configurações do ambiente. Uma personalização muito comum é a de inserir um diretório a mais no valor da variável PATH para que novos programas possam ser executados. Você poderia redefiní-la com o seguinte comando: PATH=$PATH:/novo/diretorio.

Escopo das variáveis

Vale a pena notar que, ao definirmos uma variável manualmente, ela passa a fazer parte do sistema, mas apenas dentro daquela instância do bash. Quando se executa um shell script, por exemplo, ele abre um novo shell bash e, portanto, o acesso às novas variáveis é perdido. Se quiser que uma variável definida na linha de comando esteja disponível globalmente, devemos usar o comando export:

SITE="Canaltech"

export SITE

Outra característica importante a ser lembrada é o fato de que as variáveis definidas em linha de comando existem apenas enquanto a sessão estiver ativa. Ao realizar um logout, por exemplo, elas são destruídas. Para torná-las permanentes devemos editar os arquivos de configurações do bash.

Arquivos de configuração do bash

Além das variáveis de ambiente, o bash também é configurado de acordo com rotinas e parâmetros indicados em alguns arquivos, existindo, inclusive, certa hierarquia entre eles. Para começar, há os arquivos de configuração global do shell localizados no diretório /etc:

  • /etc/profile: arquivo global do sistema com as configurações do ambiente shell, lido apenas em seções interativas do shell, quando, por exemplo, um usuário abre o terminal pelo Dash do Ubuntu;
  • /etc/profile.d/: o arquivo /etc/profile também executa scripts presentes dentro do diretório /etc/profile.d. Se quiser que uma variável esteja disponível para todos os usuários do sistema, é recomendado configurá-la dentro desse diretório e não diretamente no arquivo /etc/profile;
  • /etc/bashrc: arquivo global do sistema com funções e aliases ("apelidos" para outros comandos). Este não é carregado apenas no primeiro login do usuário, mas sim a cada execução do bash;
  • /etc/inputrc: esse arquivo serve para configurar o comportamento do teclado e da tela em geral.

No Ubuntu Linux, os arquivos mudam um pouco. O /etc/bashrc se tornou

/etc/bash.bashrc

e, além disso, variáveis de ambiente como a $PATH estão definidas em

/etc/environment

.

Como se não bastasse, também há arquivos cujo escopo atinge apenas o usuário do diretório home em que se encontram:

  • ~/.bash_profile: configurações do ambiente, definidas pelo usuário. Arquivo carregado no momento do login, logo após o /etc/profile;
  • ~/.bashrc: arquivo com funções e apelidos, definidos pelo usuário e carregado logo após o /etc/bashrc;
  • ~/.inputrc: equivale ao /etc/inputrc, mas suas configurações valem apenas para o usuário local;
  • ~/HOME/.bash_logout: arquivo carregado no logout (finalização do shell). Nele é possível, por exemplo, definir rotinas de manutenção de arquivos, especificando para o bash apagar arquivos de determinado diretório assim que a sessão for encerrada.

Caso um desses arquivos não exista, mas você precise usá-los, crie-os com a ajuda do comando touch ou do editor de textos de sua preferência. Note que a maior parte desses arquivos possui nomes que começam com um ponto final. Isso indica que eles são ocultos e você só poderá listá-los com o comando ls -a. No Ubuntu, também existe a opção de executar o comando la, um alias para o comando ls -A.

Exemplos de uso

Para ter uma ideia melhor de como essas configurações funcionam, citamos dois exemplos logo a seguir. Primeiramente, testaremos uma configuração por meio da redefinição de valor de uma variável de ambiente. Caso você goste, saberá como alterar um arquivo de configuração para que essa mudança seja efetivada a cada login.

Alterando a cor do prompt

Está achando o prompt do bash muito sem graça? Saiba que podemos inserir informações de cores na variável PS1. Para tornar o prompt verde, por exemplo, digite:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Ao pressionar Enter, o prompt será exibido na cor verde, como mostra a imagem abaixo:

Prompt colorido no Ubuntu Linux

Como dito anteriormente, mudar uma variável dessa forma torna o novo valor válido apenas naquela instância do bash em que você está trabalhando. Se um novo bash for executado, você notará que o prompt voltará à configuração antiga.

A confguração usada neste exemplo pode ser efetivada facilmente ao editar o arquivo ~/.bashrc. Abra-o no editor de textos de sua preferência e procure pela seguinte linha:

#force_color_prompt=yes

Note que ela começa com o caractere #. As linhas que começam dessa forma servem apenas como anotações e não possuem qualquer efeito na execução do bash. Portanto, apague o caractere # dessa linha e salve o arquivo. Depois, basta reiniciar o terminal ou executar novamente o bash para ver o novo prompt ser efetivado.

Se você estiver usando outra distro, abra o arquivo .bashrc do seu diretório home e adicione a seguinte linha ao final dele:

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Depois, finalize o terminal ou execute uma nova versão do bash para perceber que a configuração do prompt verde agora é permanente. Caso se arrependa, você já sabe qual linha deve comentar dentro do .bashrc. Se estiver no Ubuntu, adicione novamente o caractere # na linha force_color_prompt=yes. Se realizou o procedimento para outras distros, comente ou elimine a última linha.

E caso não tenha gostado da cor verde, uma última dica: essa cor é definida pela sequência 01;32. Tente alterar esse valor, como para 0;34 ou 0;31, para ver o que acontece.

Este artigo faz parte de nossa biblioteca de conteúdo "Tudo o que você precisa saber sobre o Linux". Não deixe de acessar e conferir todo o conteúdo publicado sobre o Pinguim.

Fonte: https://help.ubuntu.com/community/EnvironmentVariables