Android

Como definir e listar variáveis ​​de ambiente no linux

Variáveis de ambiente no Linux

Variáveis de ambiente no Linux

Índice:

Anonim

Nos sistemas baseados em Linux e Unix, as variáveis ​​de ambiente são um conjunto de valores nomeados dinâmicos, armazenados no sistema que são usados ​​por aplicativos iniciados em shells ou subshells. Em palavras simples, uma variável de ambiente é uma variável com um nome e um valor associado.

As variáveis ​​de ambiente permitem personalizar como o sistema funciona e o comportamento dos aplicativos no sistema. Por exemplo, a variável de ambiente pode armazenar informações sobre o editor de texto ou navegador padrão, o caminho para os arquivos executáveis ​​ou as configurações de local do sistema e de layout do teclado.

Neste guia, explicaremos como ler e definir variáveis ​​de ambiente e shell.

Variáveis ​​de ambiente e variáveis ​​de shell

As variáveis ​​têm o seguinte formato:

KEY=value KEY="Some other value" KEY=value1:value2

  • Os nomes das variáveis ​​diferenciam maiúsculas de minúsculas. Por convenção, as variáveis ​​de ambiente devem ter nomes MAIÚSCULOS. Ao atribuir vários valores à variável, eles devem ser separados por dois pontos : caractere. Não há espaço ao redor do símbolo igual = .

As variáveis ​​podem ser classificadas em duas categorias principais, variáveis ​​de ambiente e variáveis ​​de shell.

Variáveis ​​de ambiente são variáveis ​​que estão disponíveis em todo o sistema e são herdadas por todos os processos e shells filhos gerados.

Variáveis ​​de shell são variáveis ​​que se aplicam apenas à instância atual do shell. Cada shell, como zsh e bash , tem seu próprio conjunto de variáveis ​​internas do shell.

Existem vários comandos disponíveis que permitem listar e configurar variáveis ​​de ambiente no Linux:

  • env - O comando permite executar outro programa em um ambiente customizado sem modificar o atual. Quando usado sem argumento, imprimirá uma lista das variáveis ​​de ambiente atuais. printenv - O comando imprime todas ou as variáveis ​​de ambiente especificadas. set - O comando define ou desativa as variáveis ​​do shell. Quando usado sem argumento, imprimirá uma lista de todas as variáveis, incluindo variáveis ​​de ambiente e shell, e funções de shell. unset - O comando exclui variáveis ​​de shell e de ambiente. export - O comando define variáveis ​​de ambiente.

Listar variáveis ​​de ambiente

O comando mais usado para exibir as variáveis ​​de ambiente é printenv . Se o nome da variável for passado como argumento para o comando, apenas o valor dessa variável será exibido. Se nenhum argumento for especificado, printenv imprime uma lista de todas as variáveis ​​de ambiente, uma variável por linha.

Por exemplo, para exibir o valor da variável de ambiente HOME , você deve executar:

printenv HOME

A saída imprimirá o caminho do usuário conectado no momento:

/home/linuxize

Você também pode passar mais de um argumento para o comando printenv :

printenv LANG PWD

en_US /home/linuxize

printenv

A saída será mais ou menos assim:

LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35;… LESSCLOSE=/usr/bin/lesspipe %s %s LANG=en_US S_COLORS=auto XDG_SESSION_ID=5 USER=linuxize PWD=/home/linuxize HOME=/home/linuxize SSH_CLIENT=192.168.121.1 34422 22 XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop SSH_TTY=/dev/pts/0 MAIL=/var/mail/linuxize TERM=xterm-256color SHELL=/bin/bash SHLVL=1 LANGUAGE=en_US: LOGNAME=linuxize XDG_RUNTIME_DIR=/run/user/1000 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin LESSOPEN=| /usr/bin/lesspipe %s _=/usr/bin/printenv

Abaixo estão algumas das variáveis ​​de ambiente mais comuns:

  • USER - O usuário conectado no momento. HOME - O diretório inicial do usuário atual. EDITOR - O editor de arquivo padrão a ser usado. Este é o editor que será usado quando você digitar edit no seu terminal. SHELL - O caminho do shell do usuário atual, como bash ou zsh. LOGNAME - O nome do usuário atual. PATH - Uma lista de diretórios a serem pesquisados ​​ao executar comandos. Quando você executa um comando, o sistema pesquisará esses diretórios nessa ordem e usará o primeiro executável encontrado. LANG - As configurações atuais de localidades. TERM - A emulação de terminal atual. MAIL - local de armazenamento do correio do usuário atual.

Os comandos printenv e env imprimem apenas as variáveis ​​de ambiente. Se você deseja obter uma lista de todas as variáveis, incluindo ambiente, shell e variáveis ​​e funções de shell, pode usar o comando set :

set

BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=()

O comando exibirá uma grande lista de todas as variáveis; portanto, você provavelmente deseja canalizar a saída para o comando less .

set | less

Você também pode usar o comando echo para imprimir uma variável de shell. Por exemplo, para imprimir o valor da variável BASH_VERSION , você deve executar:

echo $BASH_VERSION

4.4.19(1)-release

Definindo variáveis ​​de ambiente

Para ilustrar melhor a diferença entre as variáveis ​​Shell e Environment, começaremos com a configuração de Shell Variables e depois passaremos para as variáveis ​​Environment.

Para criar uma nova variável de shell com o nome MY_VAR e o valor Linuxize basta digitar:

MY_VAR='Linuxize'

Você pode verificar se a variável está configurada usando o echo $MY_VAR da filtragem da saída do comando set com grep set | grep MY_VAR set | grep MY_VAR :

echo $MY_VAR

Linuxize

Use o comando printenv para verificar se esta variável é uma variável de ambiente ou não:

printenv MY_VAR

A saída estará vazia, o que nos indica que a variável não é uma variável de ambiente.

Você também pode tentar imprimir a variável em uma subcasca e obterá uma saída vazia.

bash -c 'echo $MY_VAR'

O comando export é usado para definir variáveis ​​de ambiente.

Para criar uma variável de ambiente, exporte a variável shell como uma variável de ambiente:

export MY_VAR

Você pode verificar isso executando:

printenv MY_VAR

Linuxize

bash -c 'echo $MY_VAR'

Linuxize

Você também pode definir variáveis ​​de ambiente em uma única linha:

export MY_NEW_VAR="My New Var"

As variáveis ​​de ambiente criadas dessa maneira estão disponíveis apenas na sessão atual. Se você abrir um novo shell ou se desconectar todas as variáveis ​​serão perdidas.

Variáveis ​​de ambiente persistentes

Para tornar as variáveis ​​de ambiente persistentes, você precisa definir essas variáveis ​​nos arquivos de configuração do bash. Na maioria das distribuições Linux, quando você inicia uma nova sessão, as variáveis ​​de ambiente são lidas nos seguintes arquivos:

  • /etc/environment - use esse arquivo para configurar variáveis ​​de ambiente em todo o sistema. As variáveis ​​neste arquivo são definidas no seguinte formato:

    FOO=bar VAR_TEST="Test Var"

    /etc/profile - As variáveis ​​definidas neste arquivo são carregadas sempre que um shell de login do bash é inserido. Ao declarar variáveis ​​de ambiente neste arquivo, você precisa usar o comando export :

    export JAVA_HOME="/path/to/java/home" export PATH=$PATH:$JAVA_HOME/bin

    Arquivos de configuração específicos do shell por usuário. Por exemplo, se você estiver usando o Bash, poderá declarar as variáveis ​​no ~/.bashrc :

    export PATH="$HOME/bin:$PATH"

Para carregar as novas variáveis ​​de ambiente na sessão atual do shell, use o comando source :

source ~/.bashrc

Conclusão

Neste guia, mostramos como definir e listar variáveis ​​de ambiente e shell.

Sinta-se livre para deixar um comentário se tiver alguma dúvida.

terminal