fbpx

Trabalhar com variável do 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.

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

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.

Ex.:

$ env HOME=/home/guest2 programax

Comando pwd

Uso:

$ pwd

O comando pwd informa o diretório absoluto corrente.

Ex.:

$ pwd

/usr/local

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 🙂

Aprenda a trabalhar com Variáveis no Shell do Linux
Classificado como:                                        

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.