segunda-feira, 23 de setembro de 2013

Trabalhando com variáveis de ambiente.

A linha de comando do Linux tem uma característica muito útil que é o uso de variáveis e, ao contrário da maioria das linguagens de programação, não é necessário dizer que tipo de dado a variável contém. Por exemplo, vamos definir uma variável chamado IDADE.

$ IDADE=37

Para mostrar o valor da variável IDADE, eu digito:

$ echo $IDADE
37

Vamos agora multiplicar IDADE por 2:


$ echo $(($IDADE * 2))
74

Para concatenar um texto à variável IDADE não é necessário fazer nenhum conversão.

$ texto=`echo $IDADE "Teste"`
$ echo $texto
37 Teste

As variáveis comuns não são exportas para os sub-shell. Veja isso na sequência de comandos abaixo:

$ echo $texto
37 Teste
$ bash
$ echo $texto

$ exit
exit
$ echo $texto
37 Teste

Veja que a variável $texto só existe no bash corrente. Quando entro em um novo bash, ela não existe. Para que uma variável seja visível para os sub-shell é necessário torná-la uma variável de ambiente.

$ export texto

Agora vamos analisar a mesma sequência de comandos:

$ echo $texto
37 Teste
$ export texto
$ bash
$ echo $texto
37 Teste
$ exit
exit
$ echo $texto
37 Teste

O shell já configurar várias variáveis de ambiente que personalizam seu sistema. Para listá-las, digite:

$ env

Aqui eu apresento as principais:

  • SHELL=/bin/bash - Mostra o shell atual
  • TERM=xterm - O tipo de terminal atualmente em uso
  • USER=ricardo - O usuário corrente
  • DESKTOP_SESSION=gnome - O desktop atualmente em uso
  • PATH=/usr/games:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/brlcad/bin:/sbin:/usr/sbin:/sbin:/usr/sbin - As pastas onde o sistema vai procurar por executáveis quando estes forem digitados na linha de comando.
  • PWD=/home/ricardo/Downloads - A pasta atual
  • LANG=pt_BR.utf8 - A linguagem atual do sistema
  • HOME=/home/ricardo - O diretório de trabalho do usuário atual
  • OLDPWD=/home/ricardo - O diretório anterior (antes de um comando "cd" ter sido executado.

As variáveis de ambiente podem ser configuradas de uma forma geral através do arquivos /etc/profile, e pode ser personalizada através do arquivo ~/.profile de cada usuários.