Personalizando o BASH

16 de fev de 2015 - Paulo Dias


O BASH é uma interface de interação(shell) e também uma linguagem de programação. Existem outras alternativas de shell, mas no GNU/Linux o BASH é o mais utilizado.

Por ser uma linguagem de programação, obiviamente, o BASH possui suporte a variáveis. Essas variáveis podem ser do tipo local ou global.

As variáveis locais são válidas apenas no shell onde foram criadas, não é possível que um 'processo filho' utilize as variáveis locais de um 'processo pai'. A sintaxe para definir uma variável local é:

 
nomeVariavel='valor'
 

Para acessar o valor de uma variável é necessário utilizar o sinal '$', veja um exemplo:

 
nomeVariavel='valor'

echo $nomeVariavel 

# imprime valor

É importante salientar, que diferente de outras linguagens, não deve haver espaços entre o nome da variável, o sinal de igual(=) e o valor da variável.

Para tonar uma variável local acessível para 'processos filhos' é utilizado o comando 'export', assim:

 
export nomeVariavel='valor'
 

As variáveis globais são aquelas acessíveis por todos os porcessos, geralmente essas variáveis contém valores com informações e configurações do BASH. Por exemplo:

  • $PS1 Define a string do prompt do BASH
  • $PATH Define o caminho utilizado para encontrar os programas
  • $HOME Define o diretório home do usuário

O comando 'env' lista as variáveis globais e o comando 'set' lista todas as variáveis.

Para automatizar a configuração de variáveis é possível utilizar alguns arquivos especiais. São eles:

  • /etc/profile
  • /etc/bashrc
  • ~/.bash_profile
  • ~/.bash_login
  • ~/.profile
  • ~/.bashrc
  • ~/.bash_logout

O arquivo '/etc/profile' é executado durante o processo de autenticação. O arquivo '/etc/bashrc' é executado quando o BASH é inicializado.

Por exemplo, quando é realizado o login através do terminal com 'ctrl + alt + F2', o arquivo '/etc/profile' e o arquivo '/etc/bashrc' serão executados porquê ocorreu o login e o bash foi inicializado. Quando é aberto um shell através da interface gráfica( xterm ), apenas o arquivo '/etc/bashrc' será executado porquê o BASH foi inicializado, mas não houve login.

Os arquivos '/etc/profile' e '/etc/bashrc' são executados para todos os usuários, ou seja, a configuração realizada neles ocorre em todos os usuários do sistema. Em alguns casos é necessário realizar configurações especifcas por usuário, para isso existem os arquivos '~/.bash_profile', '~/.bash_login', '~/.profile', '~/.bashrc' e '~/.bash_logout'.

Esses arquivos ficam na pasta home de cada usuário. Na maioria das vezes apenas alguns desses arquivos são necessários e realmente estão na pasta home do usuário. Porém, é acerto afirmar que algum deles estará na pasta home de cada usuário do sistema.

Esses arquivos são executados assim:

Depois do '/etc/profile': Primeiramente é procurado o arquivo '~/.bash_profile', se esse não existir, é procurado o '~/.bash_login', se esse também não existir, é procurado '~/.bash_login'. Perceba que apenas um desses arquivos será executado... Quando um desses arquivos é encontrado, ele é executado e o BASH para de procurar.

Depois do '/etc/bashrc': '~/.bashrc'

Antes do logout: '~/.bash_logout'

Esse artigo termina aqui, mas vale lembrar que no Ubuntu existem algumas diferenças... No Ubuntu existe o arquivo '/etc/bash.bashrc' e o arquivo '/etc/environment'. Fica como 'lição de casa' pesquisar o que cada um deles faz :)


Paulo Dias

Graduado no curso tecnólogo em análise e desenvolvimento de sistemas. Defensor do Software Livre e da democratização da informação. Possui as certificações Linux LPIC-1 e Java OCA. Atualmente exerce a função de coordenador técnico na área de telecomunicações.

Siga-me no Twitter


Tags: Linux