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: 90.029 ]

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

GRIP - Conversão e ripagem de CDs em Linux

Introdução ao Linux: O editor de texto Nano

Processing - Interagindo com o usuário

Programando em Octave (parte 1)

Linux: kernel e distribuições

Leitura recomendada

Instalar o Go (Golang) no Debian e Ubuntu

ArchBang, o Arch Linux fácil!

Estruturas de virtualização

Lucaschess: software para base de dados, jogar e treinar xadrez

Desmistificando o GNU/Linux

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts