Alterando variáveis de ambiente no bash O shell do projeto GNU, bash, é um dos mais populares entre sistemas utilizando GNU e Linux, como Debian, Fedora, Mandriva, SuSE, Gentoo, entre outros. Veremos como utilizar as variáveis de ambiente nesse shell, portanto. Para definir uma variável no bash, basta executar uma linha como: NOME=VALOR O nome da variável deve conter apenas caracteres alfa-numéricos e sublinhado, começando por caracteres alfabéticos ou sublinhado. O caractere '=' não pode ser precedido ou seguido de espaços. O valor da variável deve ser escapado com aspas duplas, aspas simples ou o caractere '\' caso contenha caracteres como espaço ou outros caracteres especiais para o shell. Alguns exemplos: HOME=/home/user MYNAME="User Name" O shell expande o caractere '$' seguido do nome de uma variável por seu valor. Assim, o valor de variáveis podem ser usados em comandos do shell, permitindo que valores usados com muita frequência possam ser abreviados ou facilmente substituídos. Exemplo Exibe o valor da variável HOME na saída padrão: echo $HOME Lista os arquivos no diretório, que é o valor da variável HOME: ls $HOME Quem faz a expensão do valor dessa variável é o shell. Portanto, comandos externos e internos recebem como parâmetro o valor da variável e não o nome da variável. Para que outros programas façam uso dessas variáveis de ambiente, é necessário que o shell as exporte antes de executar tais programas. Para fazê-lo, usamos o comando export. export HOME export MYNAME Note que é o nome da variável que é usado para exportá-la, não seu valor. Feito isso, podemos fazer o teste executando um sub-shell, isto é, um shell dentro de outro shell. OTHERNAME="User Name" bash echo $MYNAME echo $OTHERNAME exit Veja que a variável MYNAME, que foi exportada, teve seu valor substituído no sub-shell. Já a variável OTHERNAME, não foi substituída pelo sub-shell, pois este não conhecia seu valor, já que a variável não foi exportada pelo shell. O bash ainda possui os comandos internos set e unset, que podem ser utilizados para visualizar a lista de variáveis de ambiente e remover variáveis de ambiente. set Lista variáveis de ambiente e funções definidas. unset Remove a variável de ambiente. Exemplos Remover a variável de ambiente MYNAME: echo $MYNAME unset MYNAME echo $MYNAME Listar as variáveis de ambiente e funções: set O comando set lista apenas as variáveis de ambiente, se o bash estiver operando em modo POSIX. Para isso, basta definir a variável POSIXLY_CORRECT. POSIXLY_CORRECT=1 set Outro comando, env, pode ser usado pra manipular o ambiente. Este comando externo pode executar um outro comando com um novo ambiente definido ou simplesmente listar o ambiente atual. Exemplos Listar variáveis de ambiente: env Executar o comando ls com a variável POSIXLY_CORRECT em seu ambiente: env POSIXLY_CORRECT=1 ls / -a