Header Ads

Linux Class - Variáveis, export, set, unset, env

Olá pessoas.
Simbora continuar nossa Linux Class! Vamos dar uma olhadinha em algumas variáveis importantes do Linux e alguns comandos para manipulá-las.


Vamos lá então... Abaixo relaciono algumas variáveis muito importantes do BASH:

- $DISPLAY: indica para as aplicações onde as janelas serão exibidas;
- $HISTFILE: caminho do arquivo de histórico do Bash;
- $HISTFILESIZE: tamanho do arquivo de histórico;
- $HOME: pasta principal do usuário atual;
- $LOGNAME: nome do usuário logado;
- $USER: nome do usuário logado;
- $PATH: diz para o Shell onde estão os arquivos executáveis;
- $PS1: define a aparência do do Shell;
- $PWD: guarda o último diretório utilizado;
- $OLDPWD: guarda o diretório anterior utilizado;
- $TERM: mostra o tipo de terminal que estamos usando (através de uma interface gráfica ou sem modo texto / servidor / tty).

Pronto! Agora vamos dar uma olhadinha em alguns comandos para manipular estas e/ou outras variáveis.

Mas antes disso, vamos entender uma coisa muito importante: cada instância do terminal possui seu processo individual. Quando um script é executado, um novo processo é criado para o mesmo.

Variáveis locais só podem ser lidas por comandos executados no mesmo processo onde foram criadas, ou seja, um script não poderá lê-la. Consequentemente, variáveis globais podem ser lidas por outros processos da mesma instância do terminal, assim como scripts.

Se uma nova instância de terminal for aberta (uma nova janela de terminal), mesmo que a variável seja global, ela não poderá ser lida nessa nova instância. Vale ressaltar que, se abrirmos abrirmos uma nova instância do Bash através do terminal pai (o que já se encontra aberto), o processo filho (novo terminal) herdará as variáveis declaradas de forma global.

DECLARAÇÃO DE VARIÁVEL LOCAL:
Para declarar uma variável, basta digitar seu nome e utilizar o sinal de "=" para definir seu valor.

VAR_TESTE=testando

- VAR_TESTE é a variável;
- testando é o valor atribuído a ela.

Para visualizar o valor da variável basta utilizar o comando echo $VAR_TESTE.

DECLARAÇÃO DE VARIÁVEL GLOBAL:
Para transformar uma variável já declarada localmente em global, basta utilizar o comando export.

export VAR_TESTE

Mas se deseja declarar uma variável global desde o início, basta utilizar o export junto de sua declaração.

export VAR_TESTE2=testando2

OBS.: os comandos abaixo devem ser digitados com letra minúscula: set, unset, env.

SET
Comando utilizado para exibir todas as variáveis declaradas, tanto locais quanto globais.

ENV
Comando utilizado para exibir todas as variáveis globais (exportadas). Trata-se de um comando externo (não faz parte do Bash), portanto só consegue ler variáveis exportadas.

Esse comando também permite que você mude o valor de uma variável temporariamente para ser utilizada em um script.

env VAR_TESTE2=temp ./script

Supondo que meu script tenha o comando echo $VAR_TESTE2, o resultado apresentado será temp.

UNSET
Remova uma variável declarada.

unset VAR_TESTE2

Antes de finalizar, vamos dar uma olhadinha em algumas variáveis criadas dinamicamente pelo SHELL, sendo elas: $, !, ? e ~.

$
Armazena o PID do processo atual.

echo $$ - exibe o valor.

!
Armazena o PID do último processo executado (pelo usuário) no plano de fundo.

echo $! - exibe o valor.

?
Armazena o exit code do último processo executado (código de saída - se teve sucesso na execução ou algum erro).

echo $? - exibe o valor.


NOTA: código de saída (exit code) igual a zero, significa sucesso. Outros números são caracterizados como algum tipo de erro ou retorno não esperado.


~
Contém o caminho da home do usuário atual, além de poder referenciar a home de outros usuários.

echo ~ - exibe o caminho da home do usuário atual;
echo ~root - exibe o caminho da home do usuário root;
cd ~ - vai para o diretório home do usuário atual.

E por hoje é só!

Vou deixar uma dica bem para você aprimorar seus conhecimentos no Linux. Esse curso é muito bom e está bem barato para o conteúdo oferecido:


Mesmo que não tenha interesse na certificação, vale muito a pena!

Nos vêmos no próximo Linux Class...

Nenhum comentário