Como listar todos os nomes de variáveis e seus valores atuais?

276

Como listar todos os nomes de variáveis e seus valores atuais?

Incluindo não apenas $HOME , $PWD etc, mas qualquer outro que você tenha definido.

    
por Strapakowsky 30.03.2013 / 01:36

7 respostas

394

Digite o seguinte comando em um terminal para imprimir todas as variáveis de ambiente:

printenv

Para mais informações sobre este comando, leia a página printenv man .

Para mostrar uma lista incluindo as "variáveis do shell", você pode inserir o próximo comando:

( set -o posix ; set ) | less

Isso mostrará não apenas as variáveis do shell, mas também as variáveis de ambiente.

Para mais informações relacionadas com este tópico, leia:

por Lucio 30.03.2013 / 02:21
42

Eu sei que esta pergunta é bastante antiga e respondida, mas acho que posso adicionar um pouco de informação útil.

Em todos os métodos descritos acima, o procedimento sugerido é:

  • inicie um terminal
  • mostra as variáveis de ambiente usando env ou printenv ou qualquer outra coisa

O problema dessas soluções é que você está vendo as variáveis de ambiente do shell que está sendo executado no terminal . Você não está vendo as variáveis de ambiente disponíveis para uma execução de aplicativo, por exemplo, diretamente pela interface gráfica.

Isso é perceptível se, por exemplo, você usar seu ~/.profile ou .bashrc ou .zshenv (dependendo do seu shell) para modificar as variáveis de ambiente --- como a adição clássica de diretórios ao caminho .

Para ver as variáveis de ambiente disponíveis para o aplicativo iniciado diretamente no ambiente gráfico, você pode fazer o seguinte (no Gnome Shell, tenho certeza de que existe um método equivalente em todos os outros DE):

  • pressione Alt-F2
  • execute o comando xterm -e bash --noprofile --norc

Agora você tem um terminal com um shell que não adicionou nenhuma variável de ambiente. Você pode usar env aqui para listar todas as suas variáveis de ambiente:

Obviamente, o novo shell terá as variáveis de ambiente adicionadas pelos arquivos do sistema, mas as variáveis devem estar disponíveis (por herança) para todos os programas no sistema, de qualquer maneira.

Eu estou postando isso porque é a quarta vez que eu tenho que pesquisar este truque novamente, verificando meu arquivo .pam_environment . Então agora vou encontrá-lo mais rápido (e, no processo, espero ajudar outra pessoa ...)

    
por Rmano 12.10.2013 / 02:37
31

Você pode ver todas as variáveis com o declare incorporado.

declare -p

Se você estiver interessado apenas em variáveis de ambiente, use

declare -xp

Execute help declare para ver quais são as outras opções.

    
por geirha 04.04.2013 / 22:28
11

Para listar as variáveis de ambiente no terminal com CTRL + ALT + T você pode usar o comando env .

por exemplo:

[raja@localhost ~]$ env
XDG_VTNR=1
SSH_AGENT_PID=3671
XDG_SESSION_ID=3
HOSTNAME=localhost.localdomain
IMSETTINGS_INTEGRATE_DESKTOP=yes
GPG_AGENT_INFO=/home/raja/.gnupg/S.gpg-agent:3691:1
GLADE_PIXMAP_PATH=:
TERM=xterm-256color
SHELL=/bin/bash
XDG_MENU_PREFIX=xfce-
DESKTOP_STARTUP_ID=
HISTSIZE=1000
XDG_SESSION_COOKIE=0250277dd805498381e96c05d88068b0-1364679772.845276-1676152201
WINDOWID=65011716
GNOME_KEYRING_CONTROL=/home/raja/.cache/keyring-N3QoQ2
IMSETTINGS_MODULE=none
QT_GRAPHICSSYSTEM_CHECKED=1
USER=raja

etc.

espero que ajude.

    
por Ten-Coin 30.03.2013 / 17:41
3

No bash usando o compgen:

compgen -v | while read line; do echo $line=${!line};done  
    
por tmgoblin 11.04.2014 / 22:53
2

env é um caminho POSIX 7 :

export asdf=qwer
env | grep asdf

Exemplo de saída:

asdf=qwer

Exibe apenas variáveis exportadas: variáveis não exportadas geralmente não são consideradas "variáveis de ambiente".

Prefere que mais de printenv , que não é POSIX. Ambos parecem fazer a mesma coisa sem argumentos: link

    
0

Se você quiser uma variável de ambiente específica, em vez de imprimi-las todas com printenv , você pode, por exemplo, imprimi-las fazendo echo "$PWD"

    
por inigo333 08.01.2018 / 15:13