Variaveis de Ambiente: Configuracao e Uso Pratico
O Que Voce Vai Aprender
- Verificar valores de variaveis de ambiente com
echo $VARouenv - Definir suas proprias variaveis de ambiente com
export - Entender o
PATHe corrigir erros "command not found" por conta propria - Persistir configuracoes entre sessoes usando
.bashrc
Publico-Alvo: Voce conhece comandos basicos (pwd, cd, ls) mas nao tem certeza do que $HOME ou export realmente significam.
Introducao: O Que Sao Variaveis de Ambiente?
$HOME e $PATH nos tutoriais. O que sao essas coisas? O sinal $ parece um feitico magico que eu nao entendo./home/lina" com o nome HOME. Entao quando voce escreve $HOME, o shell procura a anotacao e substitui por /home/lina.Resumo Rapido
- Apenas verificar um valor →
echo $VARouenv | grep VAR - Usar apenas no shell atual →
export VAR=value - Manter para o proximo login → escreva no
~/.bashrc - 80% dos erros "command not found" estao relacionados ao PATH
Pre-requisitos
- SO: Ubuntu / outras distribuicoes Linux
- Shell: bash (zsh funciona quase da mesma forma)
- Um terminal mostrando o prompt
$
1. Lendo Variaveis de Ambiente
Conclusao: Leia uma com
echo $VARe todas comenvprimeiro.
1-1. Mostrar uma variavel: echo $VAR
$ echo $HOME
/home/lina
$ echo $USER
lina
Pontos-Chave:
$significa "expandir o valor desta variavel"- Sem
$,echo HOMEapenas imprime o texto literal "HOME" - Nomes de variaveis sao maiusculos por convencao (nao e obrigatorio, mas e a norma)
$ faz uma diferenca enorme!$ e o interruptor que puxa o valor."1-2. Mostrar todas as variaveis: env / printenv
$ env
SHELL=/bin/bash USER=lina HOME=/home/lina PATH=/usr/local/bin:/usr/bin:/bin LANG=en_US.UTF-8 PWD=/home/lina ...
Se a saida for longa, use env | less para paginar, ou env | grep PATH para filtrar.
1-3. Variaveis comuns para conhecer
| Variavel | Significado | Exemplo |
|---|---|---|
HOME |
Seu diretorio home | /home/lina |
USER |
Nome do usuario atual | lina |
PATH |
Diretorios pesquisados por comandos | /usr/local/bin:/usr/bin:/bin |
SHELL |
Seu shell de login | /bin/bash |
LANG |
Idioma e locale | en_US.UTF-8 |
PWD |
Diretorio atual (mesmo que pwd) |
/home/lina/work |
HOME e PATH realmente importam. O resto e apenas "bom saber que existe."2. Definindo Variaveis: Atribuicao vs export
Conclusao: Atribuicao simples fica local;
exportpassa para processos filhos.
2-1. Atribuicao simples (variavel de shell)
$ MY_NAME=lina $ echo $MY_NAME
lina
Sem espacos ao redor de =. Escrever MY_NAME = lina faz o shell pensar "execute um comando chamado MY_NAME," que falha. Este e o acidente mais comum de iniciantes.
2-2. Promover para "variavel de ambiente" com export
$ MY_NAME=lina $ export MY_NAME
Ou de uma vez:
$ export MY_NAME=lina
export? Parecem iguais para mim.export e a variavel e "exportada" para os filhos tambem.2-3. Veja a diferenca voce mesmo
$ MY_VAR=hello $ bash -c 'echo $MY_VAR'
(em branco — nada impresso)
$ export MY_VAR=hello $ bash -c 'echo $MY_VAR'
hello
Regra pratica: Se um script ou outro comando precisa do valor, sempre use export. Para um rascunho pessoal, = simples e suficiente.
2-4. Deletar uma variavel
$ unset MY_VAR $ echo $MY_VAR
unset remove a variavel apenas do shell atual. Para deletar um valor definido no .bashrc, edite o arquivo em si.
3. PATH: A Variavel Mais Importante
Conclusao:
PATHlista diretorios de comandos; sempre acrescente:$PATHao adicionar.
PATH e exatamente como voce corrige "command not found."3-1. Inspecionar PATH
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Pontos-Chave:
- E uma lista de diretorios separados por
: - Quando voce digita um comando, o shell busca nesses diretorios da esquerda para a direita
- A primeira correspondencia vence
3-2. Encontrar onde um comando mora: which
$ which ls
/usr/bin/ls
$ which python3
/usr/bin/python3
ls na verdade mora em /usr/bin/!ls e porque /usr/bin esta no seu PATH. Se voce o removesse, teria que digitar o caminho completo /usr/bin/ls toda vez.3-3. Adicionar um diretorio pessoal ao PATH
Para usar uma pasta ~/bin para seus proprios scripts:
$ mkdir -p ~/bin $ export PATH="$HOME/bin:$PATH"
Sempre acrescente $PATH no final. Escrever export PATH="$HOME/bin" sozinho apaga o PATH existente — quase todos os comandos entao reportarao "command not found." Este e o acidente #1 com PATH.
3-4. A ordem muda o comportamento
# Preferir minha versao $ export PATH="$HOME/bin:$PATH" # Preferir a versao do sistema (minha como fallback) $ export PATH="$PATH:$HOME/bin"
Dica pro: Se mudancas no PATH quebrarem algo, execute which nome-do-comando para ver exatamente qual binario esta sendo usado.
4. Persistencia: Sobrevivendo ao Proximo Login
Conclusao:
exportdura uma sessao; escreva no.bashrcpara persistir.
export, mas quando fechei o terminal ela desapareceu...export so vive durante a sessao atual do shell. O proximo shell esquece. Para manter, escreva em um arquivo de configuracao.4-1. Qual arquivo devo editar?
| Arquivo | Quando carrega | Uso tipico |
|---|---|---|
~/.bashrc |
Todo shell bash interativo | Variaveis e aliases pessoais |
~/.profile / ~/.bash_profile |
Uma vez no login | Variaveis de ambiente no SSH |
/etc/environment |
Sistema inteiro, todos os usuarios | Configuracoes compartilhadas (root) |
Na duvida, edite ~/.bashrc. E a escolha mais confiavel para terminais GUI, WSL e sessoes SSH.
4-2. Exemplo de adicoes ao .bashrc
Adicione no final:
# Personal scripts directory export PATH="$HOME/bin:$PATH" # Locale export LANG=en_US.UTF-8 # Default editor export EDITOR=vim
4-3. Recarregar imediatamente com source
$ source ~/.bashrc
Ou o atalho com ponto:
$ . ~/.bashrc
Esquecer o source e uma armadilha classica de iniciantes. Apos editar um arquivo de configuracao, sempre faca source nele ou abra um novo shell.
source realmente faz?export dentro dele morre com o filho. source executa as linhas no seu shell atual, entao as mudancas permanecem.5. Armadilhas Comuns
Conclusao: Cuidado com uso incorreto de
$, espacos ao redor de=e sobrescrita de PATH.
5-1. Esquecer / adicionar $
# Errado: imprime a string literal "HOME" $ echo HOME # Certo: expande o valor $ echo $HOME
5-2. Espacos ao redor de =
# Errado: interpretado como um comando, falha $ MY_VAR = hello # Certo $ MY_VAR=hello
5-3. Apagar o PATH
# Desastre: PATH existente e perdido $ export PATH="$HOME/bin" # Correto $ export PATH="$HOME/bin:$PATH"
Se voce acidentalmente apagar o PATH, apenas abra um novo terminal. O PATH padrao volta. Nao edite o .bashrc em panico primeiro.
5-4. Aspas simples vs aspas duplas
$ NAME=lina # Aspas duplas: $NAME e expandido $ echo "Hello $NAME" Hello lina # Aspas simples: literal, sem expansao $ echo 'Hello $NAME' Hello $NAME
Regra pratica: Use aspas duplas "..." quando quiser expansao de variaveis. Use aspas simples '...' para strings literais.
5-5. "Eu exportei mas meu script nao ve"
Quando voce executa um script com ./script.sh, variaveis exportadas do shell pai sao herdadas. Mas um terminal novo carrega .bashrc do zero — se a variavel nao esta la, ela nao existe.
Para variaveis das quais seus scripts dependem, adicione-as ao .bashrc para que estejam sempre disponiveis.
6. Pratica Hands-On
Conclusao: Tres exercicios: definir uma variavel, estender o PATH, executar seu proprio comando.
Exercicio 1: Cumprimente-se com uma variavel
$ MY_NAME=(seu nome) $ echo "Hello, $MY_NAME!"
Mostrar dica
Nao coloque espacos ao redor de =. Use aspas duplas para que $MY_NAME seja expandido.
Exercicio 2: Criar ~/bin e adicionar ao PATH
$ mkdir -p ~/bin $ echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc $ source ~/.bashrc $ echo $PATH
Voce deve ver /home/seunome/bin perto do inicio do PATH.
Exercicio 3: Execute seu proprio comando
$ cat > ~/bin/hello << 'EOF' #!/bin/bash echo "Hello from my own script!" EOF $ chmod +x ~/bin/hello $ hello
Hello from my own script!
7. Resumo
Folha de consulta rapida
# Inspecionar echo $HOME # Variavel unica env # Todas as variaveis env | grep PATH # Filtrar which nomecomando # Onde ele esta? # Definir MY_VAR=value # Variavel de shell (apenas shell atual) export MY_VAR=value # Variavel de ambiente (filhos tambem) unset MY_VAR # Deletar # Adicionar ao PATH com seguranca export PATH="$HOME/bin:$PATH" # Sempre acrescente $PATH # Persistir vim ~/.bashrc # Acrescente linhas de export source ~/.bashrc # Aplique agora
Nao faca isto
export PATH="$HOME/bin"(apaga o PATH existente)MY_VAR = value(espacos ao redor de=)- Colocar
$HOMEentre aspas simples e se perguntar por que nao expande - Editar
.bashrcsem fazersourcee reclamar que "nada mudou"