Introdução
As variáveis de ambiente desempenham um papel crucial nos sistemas operacionais Linux. Elas são valores dinâmicos que afetam os processos em execução no sistema. Neste laboratório, exploraremos como usar o comando export no Linux para criar e gerenciar variáveis de ambiente.
As variáveis de ambiente são usadas em muitos cenários, como armazenamento de informações de configuração, comunicação entre processos e definição de configurações de todo o sistema. Entender como trabalhar com variáveis de ambiente é uma habilidade essencial para qualquer usuário ou administrador de sistemas Linux.
Este laboratório irá guiá-lo pelos fundamentos da definição de variáveis, exportando-as para torná-las disponíveis para processos filhos e utilizando-as em scripts bash. Você aprenderá como essas variáveis podem ser usadas para criar aplicações mais dinâmicas e configuráveis.
Entendendo Variáveis Básicas no Linux
Nesta etapa, você aprenderá o básico sobre como criar e usar variáveis em um ambiente de shell Linux.
No Linux, as variáveis são usadas para armazenar dados que podem ser referenciados e manipulados por comandos e scripts. Uma variável é simplesmente um nome que representa um valor.
Vamos começar criando uma variável simples em seu shell:
name="LinuxLearner"
Este comando cria uma variável chamada name e atribui a ela o valor "LinuxLearner". Observe que não deve haver espaços ao redor do sinal de igual ao atribuir valores a variáveis.
Para exibir o valor de uma variável, você usa o comando echo com o nome da variável precedido por um cifrão ($):
echo $name
Você deverá ver a saída:
LinuxLearner
Você também pode usar variáveis dentro de strings:
echo "Hello, $name!"
Saída:
Hello, LinuxLearner!
Agora, crie outra variável para armazenar sua cor favorita:
color="blue"
E exiba uma mensagem usando ambas as variáveis:
echo "Hello $name, I see your favorite color is $color."
Saída:
Hello LinuxLearner, I see your favorite color is blue.
Essas variáveis que você criou são chamadas de "variáveis de shell" ou "variáveis locais". Elas estão disponíveis apenas na sessão atual do shell. Na próxima etapa, aprenderemos como tornar as variáveis disponíveis para outros processos usando o comando export.
Exportando Variáveis como Variáveis de Ambiente
Na etapa anterior, você criou variáveis de shell que estão disponíveis apenas na sua sessão atual. Nesta etapa, você aprenderá como usar o comando export para converter uma variável de shell em uma variável de ambiente que estará disponível para processos filhos.
Vamos primeiro entender a diferença:
- Variável de Shell: Disponível apenas no shell atual.
- Variável de Ambiente: Disponível para o shell atual e todos os seus processos filhos.
Para demonstrar isso, vamos criar uma nova variável de shell:
greeting="Welcome to Linux"
Agora, vamos criar um novo script de shell que tenta acessar essa variável. Abra um editor de texto e crie um arquivo chamado test_var.sh no diretório ~/project:
cd ~/project
nano test_var.sh
Adicione o seguinte conteúdo ao arquivo:
#!/bin/bash
echo "The greeting is: $greeting"
Salve o arquivo (pressione Ctrl+O, depois Enter) e saia do nano (pressione Ctrl+X).
Torne o script executável:
chmod +x ~/project/test_var.sh
Agora, execute o script:
~/project/test_var.sh
Você verá a saída:
The greeting is:
Observe que o valor da variável não é exibido porque as variáveis de shell não são passadas para processos filhos.
Para tornar essa variável disponível para o script, você precisa exportá-la:
export greeting="Welcome to Linux"
Agora execute o script novamente:
~/project/test_var.sh
Desta vez, você deverá ver:
The greeting is: Welcome to Linux
Parabéns! Você exportou com sucesso uma variável, tornando-a uma variável de ambiente que pode ser acessada por outros processos.
Você pode verificar todas as variáveis de ambiente atuais usando o comando env:
env
Isso exibirá uma lista de todas as variáveis de ambiente na sua sessão atual.
Você também pode verificar uma variável de ambiente específica com o comando echo:
echo $greeting
Agora, vamos criar e exportar outra variável de ambiente:
export USER_LEVEL="beginner"
Execute o seguinte comando para verificar se ela foi definida:
echo $USER_LEVEL
Saída:
beginner
Criando Scripts que Utilizam Variáveis de Ambiente
Nesta etapa, você aprenderá como criar e executar scripts que utilizam variáveis de ambiente para configuração. Esta é uma prática comum no desenvolvimento de software para tornar as aplicações mais flexíveis e configuráveis sem alterar o código.
Primeiro, vamos criar um script que usa variáveis de ambiente para personalizar sua saída. Crie um novo arquivo chamado greet.sh no diretório ~/project:
cd ~/project
nano greet.sh
Adicione o seguinte conteúdo ao arquivo:
#!/bin/bash
## This script demonstrates using environment variables
## Default values if environment variables are not set
DEFAULT_NAME="Guest"
DEFAULT_LANGUAGE="English"
## Use environment variables or default values
USER_NAME=${USER_NAME:-$DEFAULT_NAME}
LANGUAGE=${LANGUAGE:-$DEFAULT_LANGUAGE}
## Greet based on language
if [ "$LANGUAGE" = "English" ]; then
echo "Hello, $USER_NAME! Welcome to the Linux learning environment."
elif [ "$LANGUAGE" = "Spanish" ]; then
echo "Hola, $USER_NAME! Bienvenido al entorno de aprendizaje de Linux."
elif [ "$LANGUAGE" = "French" ]; then
echo "Bonjour, $USER_NAME! Bienvenue dans l'environnement d'apprentissage Linux."
else
echo "Hello, $USER_NAME! Welcome to the Linux learning environment."
fi
Salve o arquivo (pressione Ctrl+O, depois Enter) e saia do nano (pressione Ctrl+X).
Torne o script executável:
chmod +x ~/project/greet.sh
Agora, execute o script sem definir nenhuma variável de ambiente:
~/project/greet.sh
Saída:
Hello, Guest! Welcome to the Linux learning environment.
O script usou os valores padrão, já que nenhuma variável de ambiente foi definida. Vamos definir algumas variáveis de ambiente e executar o script novamente:
export USER_NAME="LinuxExplorer"
export LANGUAGE="Spanish"
Agora execute o script novamente:
~/project/greet.sh
Saída:
Hola, LinuxExplorer! Bienvenido al entorno de aprendizaje de Linux.
Observe como a saída do script mudou com base nas variáveis de ambiente que definimos. Isso demonstra como as variáveis de ambiente podem ser usadas para configurar o comportamento da aplicação sem modificar o código.
Vamos tentar com outro idioma:
export LANGUAGE="French"
~/project/greet.sh
Saída:
Bonjour, LinuxExplorer! Bienvenue dans l'environnement d'apprentissage Linux.
Essa abordagem é amplamente utilizada na configuração de software para tornar as aplicações mais flexíveis e adaptáveis a diferentes ambientes.
Uso Avançado e Variáveis de Ambiente Temporárias
Nesta etapa, você aprenderá como definir variáveis de ambiente para um único comando sem alterar o ambiente global e como implementar um uso mais avançado de variáveis de ambiente.
Definindo Variáveis de Ambiente para um Único Comando
Às vezes, você só deseja definir uma variável de ambiente para um único comando. Você pode fazer isso prefixando o comando com as atribuições de variáveis de ambiente:
LANGUAGE="Spanish" ~/project/greet.sh
Observe que o script é executado com a configuração de idioma espanhol, mas a variável de ambiente global não foi alterada:
echo $LANGUAGE
Saída:
French
Isso ocorre porque a variável de ambiente foi definida apenas durante a execução do comando.
Variáveis de Ambiente em um Cenário Real
Vamos criar um exemplo mais prático: um script de configuração para uma aplicação hipotética. Crie um novo arquivo chamado app_config.sh:
cd ~/project
nano app_config.sh
Adicione o seguinte conteúdo:
#!/bin/bash
## Application configuration script
## Display the current configuration
echo "Current Application Configuration:"
echo "--------------------------------"
echo "App Name: ${APP_NAME:-Unknown}"
echo "App Version: ${APP_VERSION:-0.0.0}"
echo "Log Level: ${LOG_LEVEL:-INFO}"
echo "Database URL: ${DB_URL:-localhost:5432}"
echo "API Key: ${API_KEY:-not set}"
echo "--------------------------------"
## Check if required configurations are set
if [[ -z "$APP_NAME" ]]; then
echo "WARNING: APP_NAME is not set. Some features may not work properly."
fi
if [[ -z "$API_KEY" ]]; then
echo "WARNING: API_KEY is not set. API functionality will be limited."
fi
## Validate log level
valid_log_levels=("DEBUG" "INFO" "WARNING" "ERROR" "CRITICAL")
log_level=${LOG_LEVEL:-INFO}
valid=false
for level in "${valid_log_levels[@]}"; do
if [[ "$level" == "$log_level" ]]; then
valid=true
break
fi
done
if [[ "$valid" == false ]]; then
echo "ERROR: Invalid LOG_LEVEL '$log_level'. Must be one of: ${valid_log_levels[*]}"
exit 1
fi
echo "Configuration validation complete."
Salve o arquivo (pressione Ctrl+O, depois Enter) e saia do nano (pressione Ctrl+X).
Torne o script executável:
chmod +x ~/project/app_config.sh
Agora, execute o script sem definir nenhuma variável de ambiente:
~/project/app_config.sh
Você deverá ver avisos sobre configurações ausentes.
Agora, defina todas as variáveis de ambiente necessárias e execute o script novamente:
export APP_NAME="MyAwesomeApp"
export APP_VERSION="1.0.0"
export LOG_LEVEL="DEBUG"
export DB_URL="postgres://user:password@dbserver:5432/mydb"
export API_KEY="abc123xyz456"
~/project/app_config.sh
Você deverá ver todos os valores de configuração exibidos corretamente, sem avisos.
Tente definir um nível de log inválido:
export LOG_LEVEL="VERBOSE"
~/project/app_config.sh
O script deve exibir uma mensagem de erro para o nível de log inválido.
Este exemplo demonstra como as variáveis de ambiente podem ser usadas para configuração de aplicações, com validação e valores padrão.
Tornando Variáveis de Ambiente Persistentes
Até agora, definimos variáveis de ambiente que duram apenas durante a sessão atual do terminal. Assim que você fecha o terminal ou faz logout, essas variáveis são perdidas. Nesta etapa, você aprenderá como tornar as variáveis de ambiente persistentes entre as sessões.
Armazenando Variáveis de Ambiente em Arquivos de Configuração
Existem vários arquivos onde você pode definir variáveis de ambiente para torná-las persistentes:
~/.bashrcou~/.zshrc: Para variáveis específicas de um usuário./etc/environment: Para variáveis de todo o sistema./etc/profileou arquivos em/etc/profile.d/: Para variáveis de todo o sistema carregadas no login.
Vamos adicionar algumas variáveis de ambiente ao arquivo de configuração do shell do seu usuário. Como este ambiente de laboratório usa ZSH, editaremos o arquivo ~/.zshrc:
nano ~/.zshrc
Role até o final do arquivo e adicione as seguintes linhas:
## Custom environment variables
export EDITOR="nano"
export CUSTOM_PATH="$HOME/bin"
export GREETING="Hello from .zshrc!"
Salve o arquivo (pressione Ctrl+O, depois Enter) e saia do nano (pressione Ctrl+X).
Para aplicar essas alterações à sua sessão atual, você precisa carregar o arquivo:
source ~/.zshrc
Agora, verifique se as variáveis estão definidas:
echo $EDITOR
echo $CUSTOM_PATH
echo $GREETING
Você deverá ver os valores que definiu no arquivo .zshrc.
Essas variáveis de ambiente estarão disponíveis toda vez que você iniciar uma nova sessão de shell.
Criando um Arquivo de Variáveis de Ambiente Personalizado
Uma boa prática para gerenciar variáveis de ambiente é criar um arquivo separado apenas para elas, especialmente para variáveis específicas de um projeto. Isso facilita o gerenciamento e o compartilhamento de configurações.
Vamos criar um arquivo chamado .env no seu diretório de projeto:
cd ~/project
nano .env
Adicione o seguinte conteúdo:
## Project environment variables
export PROJECT_NAME="Linux Environment Lab"
export PROJECT_VERSION="1.0.0"
export DEBUG_MODE="true"
Salve o arquivo (pressione Ctrl+O, depois Enter) e saia do nano (pressione Ctrl+X).
Para carregar essas variáveis na sua sessão atual, carregue o arquivo:
source ~/project/.env
Agora verifique se as variáveis estão definidas:
echo $PROJECT_NAME
echo $PROJECT_VERSION
echo $DEBUG_MODE
Você deverá ver os valores do arquivo .env.
Criando um Script para Carregar Variáveis de Ambiente
Finalmente, vamos criar um script que carrega variáveis de ambiente de um arquivo. Este é um padrão comum em ambientes de desenvolvimento:
cd ~/project
nano load_env.sh
Adicione o seguinte conteúdo:
#!/bin/bash
## Script to load environment variables from a .env file
ENV_FILE=".env"
if [[ -f "$ENV_FILE" ]]; then
echo "Loading environment variables from $ENV_FILE"
## Read each line from the .env file
while IFS= read -r line || [[ -n "$line" ]]; do
## Skip comments and empty lines
if [[ $line =~ ^## ]] || [[ -z $line ]]; then
continue
fi
## Export the variable if it starts with "export "
if [[ $line == export* ]]; then
## Remove the "export " prefix and export the variable
eval "${line}"
echo "Exported: ${line#export }"
fi
done < "$ENV_FILE"
echo "Environment variables loaded successfully"
else
echo "Error: $ENV_FILE file not found"
exit 1
fi
Salve o arquivo (pressione Ctrl+O, depois Enter) e saia do nano (pressione Ctrl+X).
Torne o script executável:
chmod +x ~/project/load_env.sh
Agora, remova as variáveis que definimos anteriormente e execute o script para carregá-las novamente:
unset PROJECT_NAME PROJECT_VERSION DEBUG_MODE
echo "PROJECT_NAME: $PROJECT_NAME"
## Now load the variables using the script
~/project/load_env.sh
## Check if the variables are now set
echo "PROJECT_NAME: $PROJECT_NAME"
O script lê o arquivo .env e exporta cada variável definida com a palavra-chave export.
Essa abordagem é comumente usada em ambientes de desenvolvimento para gerenciar variáveis de ambiente específicas do projeto.
Resumo
Neste laboratório, você aprendeu os conceitos essenciais para trabalhar com variáveis de ambiente no Linux:
Variáveis Básicas: Você aprendeu como criar e usar variáveis de shell na sessão atual.
Variáveis de Ambiente: Você descobriu como usar o comando
exportpara converter variáveis de shell em variáveis de ambiente que podem ser acessadas por processos filhos.Usando Variáveis em Scripts: Você criou scripts que leem e usam variáveis de ambiente para personalizar seu comportamento sem alterar o código.
Uso Avançado: Você explorou técnicas avançadas, como definir variáveis para um único comando e validar valores de variáveis em scripts.
Variáveis Persistentes: Você aprendeu como tornar as variáveis de ambiente persistentes adicionando-as a arquivos de configuração e criando scripts utilitários para carregá-las.
As variáveis de ambiente são um recurso poderoso no Linux que permite configurar aplicações, compartilhar dados entre processos e personalizar seu ambiente. Elas são amplamente utilizadas no desenvolvimento de software, administração de sistemas e implantação de aplicações.
Ao dominar as variáveis de ambiente, você adquiriu uma habilidade importante que será muito útil em sua jornada no Linux, desde projetos pessoais até a administração de sistemas em nível empresarial.



