Como posso listar todas as variáveis do shell?

16

Lendo sobre esta questão: Em zsh como posso listar todas as variáveis de ambiente? , perguntei, como listar todas as variáveis de shell ?

Além disso, a distinção entre variáveis shell e ambiente se aplica a shells que não sejam zsh?

Eu estou principalmente interessado em Bash e Zsh, mas seria ótimo saber como fazer isso em outros shells tradicionais.

    
por Josh 26.12.2014 / 14:48

3 respostas

16

Listar todas as variáveis do shell

bash : use set -o posix ; set . As opções POSIX estão lá para evitar a saída de muita informação, como definições de função. declare -p também funciona.

zsh : use typeset

Variáveis do shell e variáveis de ambiente

Uma variável de ambiente está disponível para os processos filho exec() -ed (como uma cópia. Se o processo pai alterar a variável, o ambiente filho não será atualizado). Uma variável não-ambiente está disponível apenas para o shell em execução atual e para os subshells fork() -ed.

(preenchido graças aos comentários)

    
por 26.12.2014 / 14:59
6

Existem muitas alternativas:

printenv

Print the values of the specified environment VARIABLE(s). If no VARIABLE is specified, print name and value pairs for them all.

env

env - run a program in a modified environment

export

Set an environment variable. Mark each name to be passed to child processes in the environment.....

-p Display output in a form that may be reused as input.

If no names are supplied, or if the '-p' option is given, a list of exported names is displayed.

conjunto

é útil para obter as variáveis do shell também.

Se você precisar de informações extras (inteiro, exportado), você deve usar

composição

export tem uma vantagem, que sua saída pode ser imediatamente lida de volta no shell.

Por último, existe

compgen -v

Display possible completions depending on the options.

que mostra todas as variáveis, shell e ambiente, sem seu valor ou informações extras. Você terá que ecoar $ VARIABLE_NAME para encontrar o valor da variável. Mas pelo menos a lista está completa. Pertence a bash , não a zsh .

    
por 26.12.2014 / 16:36
3

Com zsh , você pode usar typeset , que fornece mais informações do que set , por exemplo, o tipo das variáveis. Você ainda pode filtrar a saída com grep ou sed , dependendo do que você deseja. As variáveis de ambiente são marcadas como exported na saída.

    
por 26.12.2014 / 15:37