Variáveis e Citações no Shell
Os shells gerenciam um conjunto de informações de status persistentes ao longo das sessões. Esses dados de tempo de execução são dinâmicos e podem ser modificados durante a execução, afetando diretamente o comportamento do shell. Além disso, essas informações são acessadas por programas para determinar parâmetros da execução do sistema. A maior parte desses dados é mantida por meio de variáveis, que serão detalhadas neste tópico.
Variáveis
Section titled “Variáveis”As variáveis são espaços de armazenamento para dados, como texto e números. Uma vez definido, o valor da variável pode ser acessado posteriormente.
Na maioria dos shells do Linux, existem 02 tipos de variáveis:
Variáveis locais
Section titled “Variáveis locais”São variáveis que estão disponíveis somente para o processo atual do shell. Se você criar uma variável local e, em seguida, iniciar outro programa nesse shell, a variável não poderá mais ser acessada por esse programa.
Variáveis de ambiente
Section titled “Variáveis de ambiente”São variáveis que estão disponíveis tanto em uma sessão de shell específica quanto em subprocessos gerados a partir dessa sessão de shell. A maioria das variáveis de ambiente aparece em letras maiúsculas.
NOTA
As variáveis não são persistentes. Quando o shell em que foram configuradas é fechado, todas as variáveis e seus conteúdos são perdidos. A maioria dos shells oferece arquivos de configuração que contêm variáveis definidas sempre que um novo shell é criado.
Manipulação de variáveis
Section titled “Manipulação de variáveis”Como criar, modificar ou remover variáveis locais e de ambiente.
Trabalhando com variáveis locais
Section titled “Trabalhando com variáveis locais”Uma variável local pode ser configurada usando o operador = (igual).
saudacao=olaO comando echo pode exibir o valor de qualquer variável.
echo $saudacao
# Saída do comandoolaObs.: Para acessar o valor da variável, tem que usar o $ antes do nome da variável
Para remover uma variável, usamos o comando unset:
unset saudacaoObs.: Quando usar o comando unset, não utilize o $ no nome da variável.
Trabalhando com variáveis globais
Section titled “Trabalhando com variáveis globais”Para disponibilizar uma variável local para subprocessos, podemos transformá-la em variável de ambiente. Usamos para isso o comando export. Quando o comando export é usado junto ao nome da variável, essa variável é adicionada ao ambiente do shell:
saudacao=olaexport saudacaoexport saudacao=olaOutra forma de usar variáveis de ambiente é colocá-las na frente dos comandos.
TZ=EST date
# Saída do comandoqui 28 ago 2025 19:39:50 ESTTZ=GMT date
# Saída do comandoqui 28 ago 2025 19:39:50 GMTUse o comando env para exibir todas as variáveis de ambiente.
Variável PATH
A variável armazena uma lista diretórios, separados por :, que contêm programas executáveis que funcionam como comandos do shell Linux.
echo $PATH
# Saída do comando/home/fernando/.local/share/pnpm:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/gamesPara adicionar um novo diretório à variável, usamos o sinal :.
PATH=$PATH:/novo_diretorioUse o comando which para descobrir onde o executável de um comando está armazenado:
which nano
# Saída do comando/usr/bin/nanoCitações no Bash (Quoting)
Section titled “Citações no Bash (Quoting)”As citações controlam como o Bash interpreta caracteres especiais. Cada tipo tem um comportamento diferente e é fundamental entender essas diferenças para escrever scripts corretamente.
No Bash, há 03 tipos de citações:
- Aspas duplas
- Aspas simples
- Caracteres de escape
Aspas duplas
Section titled “Aspas duplas”As aspas duplas dizem ao shell para considerar o texto entre as aspas (”…”) como caracteres regulares. Todos os caracteres especiais perdem o significado, exceto $(cifrão), \ (barra invertida) e ` (crase).
Por exemplo, a substituição da variável $USER não é afetada pelas aspas duplas:
echo I am $USER
# Saída do comandoI am fernandoecho "I am $USER"
# Saída do comandoI am fernandoUm caractere de espaço, por outro lado, perdeu seu significado como separador de argumentos:
touch novo arquivo
# Saída do comando-rw-rw-r-- 1 fernando fernando 0 ago 10 17:17 arquivo-rw-rw-r-- 1 fernando fernando 0 ago 10 17:17 novotouch "novo arquivo"
# Saída do comando-rw-rw-r-- 1 fernando fernando 0 ago 10 17:18 novo arquivoEm Exemplo 01, o comando touch cria dois arquivos, ele interpreta as duas palavras (novo arquivo) como argumentos individuais. Em Exemplo 02, o comando interpreta o conteúdo entre aspas duplas ("novo arquivo") com um único argumento.
Aspas simples
Section titled “Aspas simples”As aspas simples revogam qualquer significado especial de cada caractere.
Por exemplo:
echo I am $USER
# Saída do comandoI am fernandoecho 'I am $USER'
# Saída do comandoI am $USERO comando exibe a sequência exata, sem substituir a variável.
Caracteres especiais
Section titled “Caracteres especiais”Os caracteres especiais removem os significados especiais dos caracteres do Bash.
echo $USER
# Saída do comandofernandoecho \$USER
# Saída do comando$USERColocando a \ (barra invertida) antes do $ o significado especial do cifrão é cancelado. O Bash irá interpretar o nome da variável literalmente.