Bash script – Variáveis de ambiente
Neste artigo, exploraremos o importante conceito de variáveis de ambiente na linguagem de programação BASH. Compreender essas variáveis é essencial para quem deseja programar eficazmente em BASH.
Ambiente Linux e BASH
Ao desenvolver software, é fundamental considerar o ambiente no qual ele será executado. Ao trabalhar com BASH no Linux, é crucial entender que estamos inseridos nesse ambiente. O BASH desempenha um papel central na maioria das distribuições Linux, sendo utilizado desde a inicialização do sistema para inicializar serviços dinamicamente até a interface gráfica e as sessões no terminal, tanto em servidores quanto em desktops.
Para que um sistema Linux funcione de maneira harmoniosa, é necessário compartilhar informações entre os diversos softwares presentes no sistema. As variáveis de ambiente desempenham um papel crucial, pois armazenam informações úteis que outros serviços e processos precisam conhecer para funcionar normalmente.
Utilização de Variáveis de Ambiente
Os serviços em Linux, ao serem iniciados, tentam descobrir várias propriedades necessárias de várias maneiras. Por exemplo, quando o serviço Xorg, responsável por criar ambientes gráficos como o Unity no Ubuntu, é iniciado, ele configura a variável “DISPLAY” e a exporta, permitindo que chamemos aplicativos gráficos, como o Firefox, a partir da linha de comando. Sem essa variável, não seria possível executar comandos de interface gráfica pelo terminal.
Nossos scripts também podem e devem aproveitar essas variáveis de ambiente, além de criar variáveis para compartilhar informações com subprocessos. É importante observar que essas variáveis são compartilhadas de maneira hierárquica, o que significa que não podemos compartilhá-las com processos que não são iniciados no ambiente que criamos. No entanto, quando chamamos o Firefox via linha de comando ou por meio de um script, podemos compartilhar variáveis de ambiente com o Firefox, pois ele é um subprocesso do nosso script.
As variáveis de ambiente desempenham um papel central quando queremos que nossos scripts se comuniquem entre si e se integrem de maneira eficaz.
Variáveis de Ambiente Reservadas no BASH
Aqui estão algumas variáveis de ambiente reservadas do BASH que podem ser usadas em seus scripts:
Variável | Definição |
---|---|
HOME | Caminho para a pasta pessoal do usuário que está executando o script ou o terminal. |
IFS | Lista de caracteres usados para separar palavras em argumentos ou linhas de texto. |
PATH | Caminhos onde o BASH procura comandos externos para executar, separados por dois pontos. |
BASH | Caminho completo para o binário do BASH. |
COLUMNS | Número de colunas que o terminal pode exibir. |
EUID | ID efetivo do usuário que está executando o script. |
GROUPS | Array que armazena todos os grupos dos quais o usuário que executa o script faz parte. |
HOSTNAME | Nome da máquina em que o script está sendo executado. |
HOSTTYPE | Arquitetura da máquina em que o script está sendo executado (ex: i386, i686, etc.). |
LINES | Número de linhas que podem ser exibidas no terminal de uma só vez. |
MACHTYPE | Tipo de máquina em que o script está sendo executado (ex: i686-pc-linux-gnu). |
OLDPWD | Valor do diretório anterior, atualizado sempre que o comando “cd” é usado. |
OSTYPE | Descrição do sistema operacional em que o script está sendo executado. |
PPID | ID do processo pai pelo qual o script está sendo executado. |
PWD | Diretório atual em que o script está trabalhando, atualizado sempre que “cd” é usado. |
RANDOM | Número aleatório entre 0 e 32767. |
SECONDS | Número de segundos desde o início da execução do script ou desde a abertura do terminal. |
Essas são apenas algumas das variáveis de ambiente disponíveis. A disponibilidade delas pode variar de acordo com o sistema, a distribuição e a finalidade.
Demonstração Prática
Neste script, vou demonstrar como podemos ter acesso às variáveis de ambiente que poderíamos utilizar para tarefas mais complexas, mas de momento vamos apenas exibir o seu conteúdo:
#!/bin/bash
# script_var_ambiente.sh
# Este script exibe o conteúdo de algumas variáveis de ambiente.
# Exibir o conteúdo da variável de ambiente HOME.
echo "O conteúdo da variável HOME é: $HOME"
# Exibir o conteúdo da variável de ambiente PATH.
echo "O conteúdo da variável PATH é: $PATH"
# Exibir o conteúdo da variável de ambiente BASH.
echo "O conteúdo da variável BASH é: $BASH"
# Exibir o conteúdo da variável de ambiente HOSTNAME.
echo "O conteúdo da variável HOSTNAME é: $HOSTNAME"
# Exibir o conteúdo da variável de ambiente USER.
echo "O conteúdo da variável USER é: $USER"
Ao executar este script, obterá resultados semelhantes aos seguintes:
$ ./script_var_ambiente.sh
O conteúdo da variável HOME é: /home/seu_utilizador
O conteúdo da variável PATH é: /usr/local/bin
:/usr/bin:/bin
O conteúdo da variável BASH é: /bin/bash
O conteúdo da variável HOSTNAME é: seu_hostname
O conteúdo da variável USER é: seu_utilizador
Exportar Variáveis de Ambiente
Além de usar as variáveis de ambiente existentes, pode criar e exportar as suas próprias variáveis de ambiente.
Neste script, vou criar duas variáveis e exportá-las para o ambiente usando o comando “export”, em seguida, vou chamar um sub-script para ler as variáveis de ambiente exportadas. Veja como fazer isso:
#!/bin/bash
# script_export_var.sh
# Este script cria e exporta variáveis de ambiente.
# Criar duas variáveis.
mensagem1="Esta é a mensagem 1."
mensagem2="Esta é a mensagem 2."
# Exportar as variáveis para o ambiente.
export mensagem1 mensagem2
# Como podemos ver, neste script não é solicitado
# a impressão de nada. Vamos chamar o script "var_ambiente_ex3.sh"
# que irá ler do ambiente e apresentar no terminal.
# Executar o script
./var_ambiente_ex_3.sh
Pode executar este script e, em seguida, acessar essas variáveis de ambiente exportadas em outros scripts ou subprocessos em geral.
Este segundo script destina-se a ler as variáveis de ambiente exportadas pelo primeiro script.
#!/bin/bash
# script_acessar_var.sh
# Este script acede às variáveis de ambiente exportadas.
# Ler e exibir o conteúdo das variáveis de ambiente exportadas.
echo "A mensagem 1 é: $mensagem1"
echo "A mensagem 2 é: $mensagem2"
Ao executar o segundo script após o primeiro, verá:
$ ./script_acessar_var.sh
A mensagem 1 é: Esta é a mensagem 1.
A mensagem 2 é: Esta é a mensagem 2.
Se executarmos o script “var_ambiente_ex_3.sh”, não irá mostrar as mensagens, pois não foram exportadas para o ambiente.
miguel@LUA:~/Scripts/bash$ ./var_ambiente_ex_3.sh
A mensagem 1 é:
A mensagem 2 é:
Como pode ver pelos exemplos, usar e exportar variáveis de ambiente não é complicado. Basta compreender estes conceitos para usá-los em casos mais complexos e úteis.
Para experimentar os scripts, faça o download deles e coloque-os numa pasta dentro do seu diretório pessoal. Deverá conceder permissão de execução a todos eles, conforme mostrado neste exemplo:
miguel@LUA:~$ cd Scripts/bash
miguel@LUA:~/Scripts/bash$ chmod +x *
miguel@LUA:~/Scripts/bash$ ./script_var_ambiente.sh
Conclusão
As variáveis de ambiente desempenham um papel crucial na programação em BASH no ambiente Linux. Permitem que os scripts interajam com o ambiente do sistema e partilhem informações entre si e com outros processos. À medida que aprofunda o seu conhecimento em BASH, aproveite ao máximo estas variáveis para criar scripts mais poderosos e flexíveis, tornando a sua experiência de programação no Linux mais eficaz e produtiva.
3 comments
Joní Edson Kremer
Olá bom dia..
Poderias me ajudar numa coisa?
Como eu configuro a variável IFS para que ao digitar um diretorio com muitos espaços possa funcionar corretamente?
ex: cd base de dados enter...Nao está funcionando?
No aguardo
José Miguel Silva Caldeira
Olá Joní,
O valor da variável IFS é usado como separador.
Para configurar basta fazer:
IFS='o separador desejado'
Se poder colocar um exemplo de que pretende, terei todo o gosto em ajudar a resolver.
José Miguel Silva Caldeira
Se for bash interativo no terminal, tem de escapar os caracteres especiais assim:
cd base\ de\ dados
A barra serve para escapar o espaço, tornando o espaço um carácter normal.