Estou acostumado com o set
comando bash listando apenas uma lista das configurações do ambiente, por exemplo. PATH e tal.
No entanto, em um sistema Ubuntu que acabei de configurar, executando set
dumps de 2.000 linhas de texto, incluindo muitas funções como esta:
dequote ()
{
eval printf %s "$1" 2> /dev/null
}
Como imprimo apenas as variáveis de ambiente?
Responder1
Por padrão set
mostra ovariáveis de shell, não apenas as variáveis de ambiente. Nas bash
funções são consideradas parte das variáveis. Verhttps://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference.
Se você usar env
ou printenv
eles vão mostrar oambienteexportado para processos filhos, o que não énecessariamenteo mesmo que o seu bash
ambiente:
$ foo=1
$ printenv foo
$ export foo
$ printenv foo
1
O bash declare
e typeset
os builtins podem listar todos os tipos de variáveis, para omitir funções:
declare -F
A saída deles está em um formato adequado para recriar o estado em um script de shell, por isso é um pouco detalhado, embora você possa distinguir entre matrizes, números inteiros e outros tipos (dependendo da versão). Veja também a saída de export -p
.
E dehttps://stackoverflow.com/questions/1305237/how-to-list-variables-declared-in-script-in-bash
você pode dizer ao bash para usar o modo POSIX e set
se comportar "corretamente":
( set -o posix ; set )
Isso é executado em um subshell para não alterar o shell em execução e seleciona corretamente as variáveis ainda não exportadas para o ambiente herdado.
Responder2
Se você quiser listar todas as variáveis de ambiente, basta digitar env
.