fbpx Variáveis no Shell do Linux: export, $VAR e .bashrc | Certificação Linux

Variáveis no Shell do Linux: Criar, Exportar e Usar em Scripts

📅 01/04/2019 ⏱ 8 min ✍️ Uira Ribeiro
Linuxhow-to
Variáveis no Shell do Linux: Criar, Exportar e Usar em Scripts
Exam Pass App — mais de 7.000 questões LPI, offline, em 5 idiomas, disponível no Android e na App Store
Disponível no
Google Play
Disponível na
App Store

Trabalhar com variáveis no Shell do Linux é essencial para qualquer administrador de sistemas, pois elas em conjunto com alguns comandos dão muito poder e flexibilidade.

Durante a execução do bash são mantidas algumas variáveis especiais que contêm alguma informação importante para a execução do shell.

Estas variáveis são carregadas no início da execução do bash e também podem ser configuradas manualmente em qualquer momento.

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=121

Prompt de comandos PS1 e PS2

A primeira variável que iremos abordar é a PS1 ou simplesmente Prompt String 1. Esta variável guarda o conteúdo do prompt de comandos do bash quando ele está pronto para receber comandos.

Existe também a variável PS2 que guarda o conteúdo do prompt de comandos quando são necessários múltiplas linhas para completar um comando.

Estas duas variáveis do shell não afetam como o interpretador irá processar os comandos recebidos, mas podem ser de grande ajuda quando carregam informações extras como nome do usuário, diretório corrente, etc.

Esta variável é a grosso modo como o shell irá se apresentar.

Convencionou-se que as variáveis são todas escritas em caixa-alta. Mas é importante que você saiba que $nome e $NOME são duas variáveis diferentes para o shell.

O conteúdo de qualquer variável do Shell poderá ser visualizado com o comando echo sucedido pelo símbolo $ mais o nome da variável:

$ echo $PS1

\$

O caractere \ diz que qualquer outro caractere que o sucede deve ser interpretado exatamente como ele é e não processado pelo shell. Ele é o que chamamos de metacaractere.

É comum que o prompt de comandos padrão do bash venha no formato:

\u@\h:\W\$

Os comandos e variáveis no Linux são sensíveis às letras maiúsculas e minúsculas.

Cada um destes caracteres é interpretado de forma especial. O \u é utilizado para representar o nome do usuário, o \h é utilizado para representar o nome do sistema (hostname) e o \W é o diretório corrente. Um exemplo para este prompt é:

uira@notebook:home$

Variável PATH

Outra variável importante do Shell é o PATH. O path guarda uma lista dos diretórios que contêm os programas que você poderá executar sem precisar passar na linha de comandos o caminho completo de sua localização.

$ echo $PATH

/sbin:/bin:/usr/sbin:/usr/bin

É importante que você saiba que o interpretador de comandos do bash acompanha a seguinte ordem para achar e executar os comandos digitados:

1)    O comando digitado é um comando interno do interpretador de comandos?

2)    Se não for, o comando é um programa executável localizado em algum diretório listado na variável PATH?

3)    A localização do comando foi explicitamente declarada?

Uma dica interessante é incluir “:.” no final da variável PATH para que o bash inclua o diretório corrente na sua lista de busca por programas executáveis. Diferentemente do MS-DOS, o diretório corrente não está incluso na lista de busca padrão.

Sem incluir o “:.” no PATH é necessário informar o caminho relativo ao chamar programas no diretório corrente com “./nomedoprograma”.

Listando as variáveis no Linux

Uma lista completa das variáveis do shell poderá ser obtida com o comando set.

Você poderá também alterar ou criar uma nova variável do shell através dos comandos:

$ LIVRO=”Certificação Linux”

$ export LIVRO

Preferencialmente as variáveis devem ser declaradas em caixa alta e não coloque espaços entre o nome da variável, o símbolo = e o seu conteúdo. Se o conteúdo for alfanumérico é desejável que ele esteja entre aspas simples ou duplas.

Diferença de aspas simples e aspas duplas no Linux

Quando o texto de uma variável é uma sequência comum de letras e números, pouco importa se você vai usar aspas simples ou duplas.

$  FRASE1=”Este é um teste”

$  FRASE2=’de direfença entre aspas’

$ echo $FRASE1 $FRASE2

Este é um teste de diferença entre aspas

Mas se você for utilizar as variáveis entre aspas, há diferença:

$ echo “$FRASE1 $FRASE2”

Este é um teste de diferença entre aspas

$ echo ‘$FRASE1 $FRASE2’

$FRASE1 $FRASE2

Então as aspas duplas expandem o conteúdo das variáveis, enquanto as aspas simples não.

Isto faz diferença se você quer por exemplo incluir um diretório na variável PATH:

$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin

$ PATH=”$PATH:/ora/oracle/admin/bin”

$ echo $PATH

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin:/ora/oracle/admin/bin

Neste caso as aspas simples não funcionariam.

Exportar variáveis do shell para uso nos programas

Depois de criar uma variável do shell, é preciso exportá-la para o ambiente com o comando export.

Quando uma variável é exportada para o ambiente ela fica disponível para todos os processos filhos do shell (todos os programas e aplicações que você executar no bash).

Cada vez que um processo é executado pelo shell, ele somente irá receber as variáveis criadas pelo shell se elas forem exportadas com o comando export.

Assim o processo filho (o programa que desejamos executar) vai herdar do processo pai (o shell) as variáveis criadas.

Veja o exemplo abaixo, onde criamos uma variável chamada LIVRO:

$  LIVRO=”Certificação Linux”

echo $LIVRO

Certificação Linux

Se executarmos o bash novamente no mesmo terminal, para criar um processo filho, você verá que a variável LIVRO não existe, porque ela não foi exportada para os processos filho:

$ bash

$ echo $LIVRO

Algumas palavras não podem ser utilizadas como variáveis, pois são o que chamamos de palavras reservadas do Bash, utilizadas como comandos internos.

Palavras reservadas do shell

São elas: alias, alloc, bg, bind, bindkey, break, breaksw, builtins, case, cd, chdir, command, complete, continue, default, dirs, do, done, echo, echotc, elif, else, end, endif, endsw, esac, eval, exec, exit, export, false, fc, fg, filetest, fi, for, foreach, getopts, glob, goto, hash, hashstat, history, hup, if, jobid, jobs, kill, limit, local, log, login, logout, ls-F, nice, nohup, notify, onintr, popd, printenv, pushd, pwd, read, readonly, rehash, repeat, return, sched, set, setenv, settc, setty, setvar, shift, source, stop, suspend, switch, telltc, test, then, time, times, trap, true, type, ulimit, umask, unalias, uncomplete, unhash, unlimit, unset, unsetenv, until, wait, where, which, while.

Comando set

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=91

Uso:

$ set [variável]

O comando set informa uma lista de todas as variáveis locais, variáveis ambientais e funções do shell.

Algumas opções do comando set alteram o comportamento do bash, a saber:

  • -C Previnem que a saída de um programa usando `>’, `>&’ e `<>’ regrave arquivos. Mesmo que a opção -o noclobber
  • -n Lê os comandos, mas não os executa. Útil para checar scripts. Mesmo que opção -o noexec
  • -P Proíbe o shell de seguir links simbólicos. Mesmo que opção -o physical
  • -a Marca as variáveis modificadas ou criadas para export. Mesmo que opção -o allexport
  • -o history Habilita guardar o histórico de comandos digitados.

Ao utilizar as opções do set, o símbolo + pode ser utilizado para desabilitar as opções.

Comando unset

Uso:

$ unset [variável]

O comando unset apaga uma variável ambiental da memória.

Ex.:

$ unset LIVRO

Comando env

Uso:

$ env VARIAVEL=valor programa

O comando env é utilizado para executar um programa enviando uma variável ambiental. Ele habilita que um determinado programa possa ler uma variável sem a necessidade de exportá-la com o comando export. A opção -i diz para o env ignorar o ambiente herdado, sem alterar o conteúdo de qualquer variável existente. É útil para alterar uma variável momentaneamente para um teste.

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=22

Ex.:

$ env HOME=/home/guest2 programax

Comando pwd

Uso:

$ pwd

O comando pwd informa o diretório absoluto corrente.

Ex.:

$ pwd

/usr/local

&list=PL6IznNGWCdD89jP8kiacplFQcJlmMmjhb&index=80

Quer saber se uma certificação vale a pena ? Saiba porque os salários são bons, e porque as empresas estão procurando profissionais de Linux.

Você vai ententer que os benefícios superam de longe o sacrifício.

E se você já se decidiu, veja nosso Guia de Certificação.

E se quer saber onde fazer as provas, consulte a lista de cidade.

Se quiser saber o idioma das provas, veja esse post.

Aprenda muito mais sobre Linux em nosso curso online. Você pode fazer a matrícula aqui com trial de 7 dias grátis. Se você já tem uma conta, pode acessar aqui.

Gostou? Compartilhe :-)

Uira Ribeiro

Prof. Uirá Ribeiro

Chair do Board do Linux Professional Institute

Depois de anos vendo profissionais perderem horas em tarefas simples por não conhecer as ferramentas certas do Linux, decidi ensinar.
Hoje sou autor da maioria dos Materiais de Aprendizado oficiais da LPI e mentor de mais de 14.000 alunos certificados.

Conheça minha história completa →

Isso foi só uma peça. O curso ensina o caminho completo — do primeiro comando ao dia da prova.

Certificação Linux — a plataforma líder em certificações Linux no Brasil
WhatsApp