06 outubro 2007

Variáveis de ambiente

Variáveis do sistema e de ambiente definem parte do comportamento do sistema, por isso convém perceber como funcionam, qual a sua influência e como as ajustar às nossas necessidades.


Segundo a wikipedia, variáveis de ambiente são uma coleção de valores dinâmicos que influenciam o modo como os processos são executados num computador. As variáveis de ambiente existem em todos so Sistemas Operativos (OS), como os Unix ou Unix-like, MS-DOS e Windows. É certo que muitos utilizadores evitam mexer nas variáveis porque receiam estragar o seu sistema. Mas este receio pode ser evitado. O Bash permite-nos criar variáveis na shell que serão tratadas como se fossem as variáveis do sistema, mas que são limitadas à shell onde foram criadas.

1) Algumas variáveis de ambiente:

  • PATH - É nesta variável que ficam os vários caminhos separados por vírgulas, onde a shell procura os programas que o utilizador pediu para serem executados. Se a procura dos programas falha nos caminhos indicados do PATH, a mensagem "command not found" será mostrada no ecran.
  • EDITOR - É o editor por omissão. Esta variável é usada por alguns programas como o "mutt" (cliente de email na consola). No caso deste "mutt", todas as mensagens serão editadas pelo editor declarado na variável EDITOR.
  • SHELL - A shell usada pelo utilizador.
  • USER - O nome do utilizador.
  • SHLVL - O número de shells activas.
  • TERM - O emulador de terminal por omissão.
  • UID - ID do utilizador.
  • $LANG, $LC_ALL - Variável que guarda as definições da linguagem local (locale)


2) Declarando variáveis

Para declarar as variáveis basta escrever na consola "echo $VARIAVEL":

redtuxer@Julinix:~$ echo $USER $UID $SHELL $HOME
redtuxer 1000 /bin/bash /home/redtuxer


Para serem imprimidas no ecran todas as variáveis basta escrever "env". O mesmo resultado, embora ainda mais completo, pode ser obtido com o comando "set".

redtuxer@Julinix:~$ set
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="3" [1]="1" [2]="17" [3]="1" [4]="release" [5]="i486-pc-linux-gnu")
BASH_VERSION='3.1.17(1)-release'
COLORTERM=gnome-terminal
COLUMNS=80
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-xx3jZbw3lk,guid=b7585983f85c42e779404e0046f66574
DESKTOP_SESSION=gnome
DESKTOP_STARTUP_ID=
DIRSTACK=()
DISPLAY=:0.0
EUID=1000
GDMSESSION=gnome
GDM_LANG=pt_PT@euro
GDM_XSERVER_LOCATION=local
GNOME_DESKTOP_SESSION_ID=Default



3) Criando novas variáveis


Uma nova variável pode ser criada dando-lhe um nome e um valor: nova_variavel=valor. A nome da variável pode ser escrito em maiúscula ou em letra minúscula, mas atenção que é case sensitive tal como é usual nos Unix e Unix-likes. Mas tem sido regra de nomear as variáveis sempre com letra maiúscula!

redtuxer@Julinix:~$ VARIAVEL=valor
redtuxer@julinix:~$ echo $VARIAVEL
valor


A variável criada acima está limitada à shell onde foi chamada à existência. Programas que sejam executados de outras shells onde essa variável não tenha sido criada, não serão capazes de fazer uso dessa variável. Para contornar essa situação e tornar a variável utilizável globalmente, deve-se usar o comando "export".

redtuxer@julinix:~$ VARIAVEL1=valor1
redtuxer@julinix:~$ VARIAVEL2=valor2
redtuxer@julinix:~$ export $VARIAVEL2
redtuxer@julinix:~$ export VARIAVEL2
redtuxer@julinix:~$ bash #starting new shell
redtuxer@julinix:~$ echo $VARIAVEL1 $VARIAVEL2
valor2


Apenas uma variável foi exportada no exemplo acima e o seu valor foi imprimido na nova shell.


4) Armazenando valores das variáveis


Todas as variáveis, sejam as locais da corrente shell como as exportadas, estarão disponíveis enquanto o utilizador estiver logado. Para que as variáveis estejam disponíveis em sessões futuras, terão de ser colocadas no ficheiro ".profile". Se forem para ficarem disponíveis para todos os utilizadores do sistema, então terão de ser adicionadas ao ficheiro de configuração "/etc/profile".


5) Remover variáveis

Para remover uma variável da corrente shell, terá que ser usado o comando "unset":

redtuxer@julinix:~$ VARIAVEL=valor
redtuxer@julinix:~$ echo $VARIAVEL
valor
redtuxer@julinix:~$ unset VARIAVEL
redtuxer@julinix:~$ echo $VARIAVEL



Fonte: Polishlinux

0 comentários: