Variáveis no Shell do Linux [Guia Básico]
Mesmo que você não seja um programador, já deve ter ouvido falar de variáveis. Elas são um modo que o computador tem de guardar valores, sejam eles números ou um conjunto de letras, de forma que podem ser utilizados depois para algum processamento.
O shell do Linux também permite que o usuário crie variáveis para guardar valores, números, nomes, datas e até mesmo o resultado de comandos.
Várias configurações do próprio sistema são armazenadas em variáveis, que podem ser alteradas em qualquer momento, permitindo a personalização do sistema.
Variável PS1 do Prompt do Shell do Linux
O primeiro contato do usuário com o shell do Linux é o prompt de comandos.
Como este prompt de comandos se apresenta pode mudar em cada distribuição, desde o mais simples, com um simples “$” ou com informações de usuário, nome do servidor e até mesmo o diretório corrente:
[uira@server1 ~]$
O prompt de comandos pode ser personalizado através da configuração de uma variável que o shell do Linux mantém chamada de PS1.
As variáveis são carregadas no início da execução do bash e podem ser configuradas manualmente em qualquer momento.
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.
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.
Como ver o conteúdo de uma variável?
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 $PS \$
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:
- O comando digitado é um comando interno do interpretador de comandos?
- Se não for, o comando é um programa executável localizado em algum diretório listado na variável PATH?
- 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”.
Isto é um problema para usuários novatos no Linux que não entendem porque ao digitar um comando ou tentar rodar um programa que está na pasta corrente não funciona na maioria das vezes. Simplesmente é a falta que o “:.” faz no $PATH.
Comando set para ver ou alterar 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 do comando:
$ LIVRO=”Certificação Linux”
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 entre aspas simples ou 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 uma variável no shell
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 programa é 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
Uso de Coringas
Quando estamos trabalhando com arquivos e diretórios no shell é muito comum precisarmos trabalhar com diversos arquivos de uma vez. Para tornar este tipo de tarefa mais simples, o Linux oferece o recurso de coringa para os nomes dos arquivos e diretórios.
Assim como no baralho de cartas, os coringas são símbolos que podem significar muitas coisas. No Linux possibilitam que você os utilize como parte do nome dos arquivos e diretórios. Veja a tabela abaixo:
Símbolo | Descrição |
* | Significa “vale qualquer coisa” e pode substituir um ou mais caracteres de um nome. Por exemplo “Certifi*” pode significar “Certificado”, “Certificação” ou qualquer outra combinação de nomes de arquivos que inicie com “Certifi”. |
? | Significa que pode substituir um caractere somente de um nome. Por exemplo: “?ertificado” pode substituir “Certificado”, “certificado” ou qualquer outra combinação de nomes de arquivos que inicie com um caracter qualquer e termine com “ertificado”. |
{texto1, texto2…} | Substitui a parte dentro das chaves pelos texto1, depois pelo texto2, assim por diante. Por exemplo: “parte_{a,b,c}” vai resultar em “parte_a”, “parte_b” e “parte_c”. |
Exemplos:
$ ls *.txt
Lista todos os arquivos com o sufixo .txt
$ cat doc??? >> documentos
Concatena todos os arquivos iniciados com “doc” que tenham 6 caracteres de tamanho no arquivo documentos.
Ainda existem as variáveis especiais no Linux, usadas para criar scripts de shell.
Conclusão
Se você precisa guardar algum valor ou dado para poder ser utilizado depois, as variáveis são essenciais. E você precisa conhecer as variáveis principais do shell do Linux, como PS1 e PATH.
Aprenda muito mais sobre Linux em nosso curso online. Você pode efetuar a matrícula aqui. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
Gostou? Compartilhe
Tag:/dev, bash, certificação, certificaçãolinux, code, Comptia, developer, empreendedorismo, exame, freesoftware, gnu, hack, Linux, linuxfan, linuxfun, linuxmint, lovelinux, LPI, LPIC, management, nerd, opensource, php, prova, shell, software, softwarelivre, sql, tech, ti, unix