Variáveis padrão para usar em seus scripts em shell

As variáveis padrões são muito importantes para programar em Shell. Serão mostradas nesse artigo quais são as mais importantes, para quem está iniciando em Shell e alguns comandos para consultar essas variáveis.

[ Hits: 6.211 ]

Por: Mauricio Ferrari em 30/12/2020 | Blog: https://www.youtube.com/@LinuxDicasPro


Introdução



Durante minha experiência com o Linux aprendi muitas coisas, como compilar programas, criar pacotes, criar scripts e muito mais. O objetivo desse pequeno artigo é apresentar algumas variáveis padrões ou variáveis de sistema que eu costumo usar, eu tenho conhecimento no Linux que é basicamente para ajudar os iniciantes para que possam também criar seus scripts. É claro que deve ter muito mais do que eu vou apresentar, mas o que vou apresentar de variáveis padrões já vai ajudar quem for começar a programar em shell.

Existem duas categorias de variáveis de sistema no Linux. As variáveis de ambiente do bash, que existem independentemente de você as ter definido ou não. Elas são criadas automaticamente, assim que você faz o login no sistema.

São também conhecidas como Variáveis Globais. Mas também tem as variáveis do shell, são variáveis contidas exclusivamente no shell no qual elas foram configuradas ou definidas, usadas para manter registro de dados como, por exemplo, o valor do diretório de trabalho atual.

Conhecendo as Variáveis Padrão

A quantidade de Variáveis Padrão são muitas, o que eu basicamente uso, são essas:

$USER - Retorna o Nome do Usuário.

$UID - Retorna o ID do Usuário.

$PWD - Retorna o Diretório Atual.

$HOME - Retorna o Diretório HOME do Usuário Atual.

$PATH - Obtém o PATH Atual do Sistema.

$LINES - Retorna o Número de Linhas do Terminal.

$COLUMNS - Retorna o Número de Colunas do Terminal.

$0, $1, $2, $3, $4, $5, $6, $7, $8, $9, [...] - Usado dentro dos Scripts para Inserção de Parâmetros Posicionais.

$? - Para Retornar o Status de Saída ou de Erro.

Mas é possível listar muitas outras variáveis de sistema (vou listar inclusive o que já está acima):

$BASH_VERSION - Armazena a versão do shell bash em execução, em formato legível por humanos.

$CDPATH - Caminho de busca do comando cd.

$COLUMNS - Retorna o número de colunas do terminal.

$DIRSTACK - Pilha de diretórios disponíveis para os comandos pushd e popd.

$DISPLAY - Configura o valor do display X.

$EDITOR - Configurar o editor de texto padrão do sistema.

$EUID - Retorna o ID do usuário.

$GROUPS - Retorna informações sobre o GID.

$HISTFILE - Nome do arquivo no qual o histórico de comandos é salvo.

$HISTFILESIZE - Número máximo de linhas contidas no arquivo de histórico.

$HISTSIZE - Número de comandos a serem armazenados no histórico de comandos. O valor padrão é 500.

$HOME - Diretório pessoal do usuário atual.

$HOSTNAME - Nome do computador.

$HOSTTYPE - Para obter a arquitetura da maquina.

$IFS - (Separador de Campos Interno). Para separar palavras após a expansão e para dividir linhas em palavras ao usar o comando read do shell. O valor padrão é .

$LANG - Configurações de localização e idioma atuais, incluindo a codificação de caracteres.

$LINES - Retorna o número de linhas do terminal.

$MACHTYPE - Para obter a arquitetura da maquina.

$OSTYPE - Detecta o Sistema Operacional.

$PATH - Caminhos de busca para os comandos. É uma lista de diretórios, separados por dois-pontos (:), nos quais o shell procura pelos executáveis dos comandos.

$PIPESTATUS - Retorna o status de uma saída de pipe.

$PPID - Obtém o ID do processo pai.

$PS1, $PS2, $PS3, $PS4 - Configurações do Interpretador de Terminal.

$PWD - Valor do diretório de trabalho atual.

$RANDOM - Retorna um número aleatório entre 0 e 32767.

$TMOUT - Timeout padrão do comando read do shell.

$TERM - Tipo de terminal de login do usuário.

$SHELL - Configuração de caminho do shell que interpretará os comandos digitados. Geralmente, é o shell bash.

$UID - Retorna o ID do usuário.

$USER - Usuário logado atualmente.

Também tem algo específico para os Scripts:

$LINENO - Obtém o numero da linha que o script esta executando. Útil para debug.

$RANDOM - Obtém um número aleatório.

$REPLY - mantém o último valor lido.

$SECONDS - Para obter a quantos segundos o script está rodando.

$1, $2, $3, $4, $5, $6, $7, $8, $9 - Parâmetros posicionais.

$0 - Obtém o nome do script.

$* - Todos os parâmetros posicionais.

$@ - Todos os parâmetros posicionais, separados por espaço.

$# - Número de parâmetros.

$$ - PID atual.

$! - ID de uma tarefa em background.

$? - Status de saída ou de erro.

$_ - Obtém o argumento do comando anterior.

Para facilitar, existem três comandos que te vão listar as variáveis de ambiente do Linux. São eles:

printenv
env
set

Use um desses comandos e você terá uma lista bem completa de variáveis pré-definidas no sistema.

Conclusão

Tomando conhecimento dessas variáveis de sistema, as variáveis padrões, você poderá criar scripts com mais eficiência e mais enxutos. Além disso, te proporcionará um conhecimento extra em relação ao funcionamento e as propriedades do sistema que você está usando.

Referências


   

Páginas do artigo
   1. Introdução
Outros artigos deste autor

Configurando o Gslapt no Slackware Current

Convertendo os Arquivos de Temas do Windows (.themepack) em Pacotes de Wallpapers Úteis para o Linux

Fazendo o Mate Terminal iniciar sem a Barra de Menu

Placas de vídeo que já perderam o suporte no Linux

Compilando o p7zip-desktop no Ubuntu e Linux Mint

Leitura recomendada

Rodando o macOS com Docker, qemu, e KVM

Comandos básicos do Linux

LMDE Xfce - Instalação, configuração e extras

Adicionando um atalho na área de trabalho a um compartilhamento de rede no Ubuntu

Slitaz: Guia Rápido

  
Comentários
[1] Comentário enviado por fabio em 30/12/2020 - 12:37h

Muito bom! Artigo ótimo para imprimir e usar como guia de bolso.

[2] Comentário enviado por /bin/laden em 30/12/2020 - 14:25h

Pow, bem legal hein! Parabéns cara.
Tenho uma dúvida em relação a variável RANDOM. É preciso "semear" seu valor antes de usar ela?

Geralmente quando uso, faço o seguinte:

RANDOM=$$

Isso influencia alguma coisa?

---
echo 1244394795515721490698P | dc

[3] Comentário enviado por maurixnovatrento em 30/12/2020 - 20:27h


[2] Comentário enviado por /bin/laden em 30/12/2020 - 14:25h

Pow, bem legal hein! Parabéns cara.
Tenho uma dúvida em relação a variável RANDOM. É preciso "semear" seu valor antes de usar ela?

Geralmente quando uso, faço o seguinte:

RANDOM=$$

Isso influencia alguma coisa?

---
echo 1244394795515721490698P | dc


É uma variável global. Ele recebe um valor aleatório incondicionalmente. Como eu não uso ele, é difícil te detalhar mais sobre ele.

[4] Comentário enviado por maurixnovatrento em 30/12/2020 - 20:29h


Também, agradeço por terem gostado desse conteúdo. Tentei deixá-lo o mais completo que pude.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]

[5] Comentário enviado por cizordj em 30/12/2020 - 21:51h

Top demais!!

[6] Comentário enviado por maurixnovatrento em 30/12/2020 - 23:07h


[5] Comentário enviado por cizordj em 30/12/2020 - 21:51h

Top demais!!


valeu

[7] Comentário enviado por diegomrodrigues em 31/12/2020 - 11:33h

Informação boa. Parabéns!
Att, Diego M. Rodrigues

[8] Comentário enviado por DESUS em 31/12/2020 - 15:39h


[2] Comentário enviado por /bin/laden em 30/12/2020 - 14:25h

Pow, bem legal hein! Parabéns cara.
Tenho uma dúvida em relação a variável RANDOM. É preciso "semear" seu valor antes de usar ela?

Geralmente quando uso, faço o seguinte:

RANDOM=$$

Isso influencia alguma coisa?

---
echo 1244394795515721490698P | dc


o RANDOM=$$ faz com que a mesma sequencia de números gerados seja reenviada usando o ID do processo do script.

Para visualizar isso repita esse comando varias vezes:
echo $RANDOM

Então atribua o valor o $$ na variavel:
RANDOM=$$

Agora repita o comando echo como anteriormente:
echo $RANDOM

Pode observar que os valores randômicos exibidos anteriormente são os mesmos e na mesma sequência de antes.

[9] Comentário enviado por -josinaldo- em 31/12/2020 - 16:04h

Muito bom artigo

[10] Comentário enviado por maurixnovatrento em 01/01/2021 - 20:16h


[7] Comentário enviado por diegomrodrigues em 31/12/2020 - 11:33h

Informação boa. Parabéns!
Att, Diego M. Rodrigues


valeu.

[11] Comentário enviado por maurixnovatrento em 01/01/2021 - 20:17h


[9] Comentário enviado por -josinaldo- em 31/12/2020 - 16:04h

Muito bom artigo


valeu.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts