Lendo sobre esta pergunta: No zsh, como posso listar todas as variáveis de ambiente? , Eu me perguntava, como posso listar todas as variáveis de shell ?
Além disso, a distinção entre variáveis de shell e variáveis de ambiente se aplica a shells diferentes de zsh?
Estou interessado principalmente no Bash e no Zsh, mas seria ótimo saber como fazer isso em outros shells convencionais.
declare -p
fazer o mesmoset -o posix
não existe no zsh;set
não gera definições de função.set -o posix
é um erro de sintaxe na maioria dos shells.exec
, variáveis de shell não.Existem muitas alternativas:
printenv
env
exportação
conjunto
também é útil para obter variáveis de shell.
Se você precisar de informações extras (inteiro, exportado), use
formatado
A exportação tem uma vantagem, pois sua saída pode ser imediatamente lida novamente no shell.
Por fim, há
compgen -v
que mostra todas as variáveis, shell e ambiente, sem seu valor ou informações extras. Você precisará ecoar $ VARIABLE_NAME para encontrar o valor da variável. Mas pelo menos a lista está completa. Pertence ao bash , não ao zsh .
fonte
export
não tem vantagem sobreset
, pelo menos, quando se trata de citar para reentrada no shell. Eprintenv
eenv
não são de todo sobre variáveis do shell, embora estes fazem muitas vezes coincidem com as variáveis de ambiente.Com
zsh
, você pode usartypeset
, o que fornece mais informações do queset
, por exemplo, o tipo das variáveis. Você ainda pode filtrar a saída comgrep
oused
, dependendo do que deseja. As variáveis de ambiente são marcadas comoexported
na saída.fonte