Usando variáveis de ambiente

De forma breve e direta veremos como usar as variáveis de ambiente e como estabelecer nossas próprias variáveis. Especialmente indicado para aqueles que iniciam no uso do terminal.

[ Hits: 85.715 ]

Por: Juliao Junior em 22/08/2007


Usando as variáveis



Qualquer shell que estiver ativa, funcionando no momento, guarda informações que precisam ser usadas a cada momento, mais ou menos vezes. Isto é o que chamamos de variáveis de ambiente. As variáveis de ambiente 'guardam' informações tais como endereços de arquivos e diretórios, arquivos de configuração, etc.

Também podem guardar informações valiosas para o funcionamento da própria shell, como o tamanho de sua lista de histórico, qual seu sistema operacional, entre muitos outros. Para ver as variáveis de ambiente da sua shell no momento, use o comando 'declare' (estamos usando a shell 'bash'):

$ declare | less

A linha acima permitirá ler a saída do comando 'declare' com calma, graças ao comando less. Esta linha também mostrará além das variáveis de ambiente, as funções.

Você pode indicar o valor da variável, e não a variável em si, por usar o símbolo '$'. Por exemplo:

$ echo $SALARIO
2500

O comando acima imprimiu na tela o conteúdo, ou valor, da variável SALARIO.

Exemplos de variáveis de ambiente

Quando iniciamos uma shell, várias variáveis de ambientes são inicializadas. Veja algumas delas e uma breve descrição.
  • BASH: Contém o caminho completo do comando bash. Provavelmente, '/bin/bash'.
  • FCEDIT: Se alterada, indica o editor de texto usado pelo comando 'fc' para editar comandos do 'history'. Se não for alterada, o editor usado será o vi.
  • HISTFILE: Indica o endereço do seu histórico da shell. Normalmente, '$HOME/.bash_history'.
  • HISTFILE: O número de entradas do histórico. O padrão é 1000.
  • HOME: É o seu diretório home. Todas as vezes que usar o comando 'cd' sem nenhuma opção, será 'enviado' para o diretório indicado no conteúdo de HOME.
  • HOSTTYPE: Descreve a arquitetura do computador no qual seu sistema está rodando.
  • MAIL: O endereço de sua caixa de correio.
  • OSTYPE: Identifica o sistema operacional em uso.
  • PATH: É a lista dos diretórios usados para encontrar os comandos que você digita. O padrão, para usuários comuns, é /bin:/usr/bin:/usr/local/bin:/usr/bin/X11:/usr:/usr/X11R6/bin:~/bin. Note que os dois pontos (:) estão separando os diversos diretórios utilizados. Para o usuário root, também estão presentes /sbin, /usr/sbin/, /usr/local/sbin.

    Próxima página

Páginas do artigo
   1. Usando as variáveis
   2. Usando suas próprias variáveis
Outros artigos deste autor

Guia (nem tanto) Introdutório do Linux II

Baixando ISOs-Linux em altíssima velocidade

Inkscape - Introdução (parte 1)

GRIP - Conversão e ripagem de CDs em Linux

Octave - Programação científica no Linux

Leitura recomendada

Porque se aventurar no Linux

Criando uma ajuda mais aprimorada

Criando, monitorando e terminando processos

Ubuntu no Samsung Chromebook com processador ARM

Zabbix 2.4 no CentOS 6.6

  
Comentários
[1] Comentário enviado por adrianoturbo em 22/08/2007 - 11:05h

Parabéns brother bem interessante a questão de utilizar as variáveis de ambiente mesmo porque elas ficam armazenadas no terminal facilitando ainda mais a nossa vida ,já pensou ter que ficar redigitando vários comandos ?

Parabéns !
Abraços.

[2] Comentário enviado por elgio em 22/08/2007 - 11:30h

Só uma correção:

HISTFILE: Ok, nome do arquivo do HISTORY
HISTSIZE: Quantidade de comandos guardadas na memória
HISTFILESIZE: Quantidade de comandos armazenadas no arquivo

[3] Comentário enviado por tenchi em 22/08/2007 - 14:25h

Só lembrando que uma variável de ambiente normalmente pode ser utilizada em processos-filho. Para isso, deve-se "exportá-la":
$ export DISPLAY=:0.2

E assim vai...

[4] Comentário enviado por elgio em 22/08/2007 - 14:31h

Que tal um desafio?
Porque a variavel usuario não fica com o valor:

usuario=0
cat /etc/passwd|while read linha
do
if echo $linha|grep -qs root
then
usuario=$linha
echo "Achei root. Var usuario tem $usuario"
break
fi
done
echo "Final do laco. Var usuario tem $usuario"

Podia ter uma sessão aqui no Vol de desafios...
hehehehe
PS: Eu sei a resposta.

[5] Comentário enviado por tenchi em 23/08/2007 - 09:26h

Se é isso que vc quer elgio, substitua o while do tipo:
while read linha
do
(...)
done < <(cat /etc/passwd)

O pipe abre o que chamamos de subshell, e assim vai...

;-)

[6] Comentário enviado por elgio em 23/08/2007 - 09:31h

hehehe. Exato!
Há uns dois anos tomei um pau por causa disto!
Até que descobri que o pipe cria um sub-shell com novas variáveis.

Tche, eu sempre considerei isto meio que um bug do bash, pois é intuitivo tu fazer isto e querer que o resultado seja o esperado. Mas...

[]'s

[7] Comentário enviado por edupooter em 23/08/2007 - 11:18h

Por gentileza,
Como posso usar o resultado do comando "date" no formato hh:mm para comparar esse valor com um intervalo de tempo, como: entre as 23h40 até as 06h00 do outro?

Seria como assim?
#!/bin/sh

if %date >=23:40 && %date <=06:00
then halt
fi

[8] Comentário enviado por tenchi em 23/08/2007 - 13:39h

UHauhau
Elgio, eu aprendi isso esses dias. Já havia visto no curso de bash q tem no site do julioneves (julioneves.com), aí esses tempos atrás ele veio aqui an minah cidade e palestrou um mini-curso. Foi aí que eu realmente entendi como realmente funciona esse negócio....

E edupooter, tente isso:
if (($(date +%H%M)>=2300)) && (($(date +%H%M)<=0600))
then
halt
fi

É meio bizarro mas funciona...

[9] Comentário enviado por elgio em 23/08/2007 - 14:11h

Acho que não funciona.
0500 (cinco da manhã) deveria casar, mas não é MAIOR que 2340.

Trocando o && por || ?

if (($(date +%H%M)>=2340)) || (($(date +%H%M)<=600))
then
halt
fi

Mas ainda não sei. Teria que testar.
Ah, e em operações aritméticas do BASH, se um número começa com 0 é octal!

if (( 11 > 012 )); then echo OK;fi

Vai imprimir OK, porque 012 em octal significa 10 em decimal!!

[10] Comentário enviado por elgio em 23/08/2007 - 14:32h

Testei.

AGORA=$(date "+%k%M"); if (( $AGORA >= 2340 || $AGORA <= 600 )); then echo Bateu; fi

%k retorna sem o ZERO (que iria COMPLICAR). Vai retornar 600 e não 0600
para seis da manhã.

[11] Comentário enviado por tenchi em 23/08/2007 - 16:36h

Hum elgio. essa do octal eu não sabia.. hauahua
Eu nem interpretei a lógica do que ele queria, só passei um jeito de fazer... Mas acabei me ferrando nessa de octal...
- Como que faz para disparar essa arma?
- Ah, é só puxar o gatilho.

HUAHUAHU...

Flw.


[12] Comentário enviado por rsoares10 em 25/07/2014 - 01:15h

Um bom artigo, bem direto e simples. Sou iniciante no mundo Linux e gostaria de saber como faço para tornar as alterações ou a criação de uma variável de ambiente permanente.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts