Com a família de shell Bourne, todas as variáveis de shell têm nomes em maiúsculas; o que significa que você não pode dizer se uma variável específica é uma variável de ambiente ou não apenas olhando seu nome. Como você determina quais variáveis de shell Bourne são locais (definidas apenas dentro do shell atual)?
13
Respostas:
Se você deseja ver se uma variável é exportada ou não, use
declare
:fonte
A maneira mais portátil é
export -p
.export -p
lista variáveis exportadas. Geralmente é assimdeclare -x
, se o seu shell tiverdeclare
.As conchas no estilo Bourne atualmente em uso devem suportar
export -p
, conforme exigido pelo POSIX :O padrão continua explicando que o valor da variável é exibido de tal maneira que geralmente permite que seja usado posteriormente no lado direito de
=
uma atribuição. Isso quer dizer que pode ser citado. Cascas diferentes podem exibi-las de maneira diferente, mas com o mesmo efeito.export -p
funciona mesmo em conchas que não têmdeclare
embutido, como o Dash .Eu canalizei a saída para
grep
obter compacidade, mas se você não a filtrar, obterá a lista completa de suas variáveis exportadas. Da sua pergunta, parece que é o que você pode achar mais útil.Alguns shells, como o Bash, usam um formato não padrão, a menos que seja explicitamente instruído a se comportar de maneira compatível com POSIX. No Bash
export -p
fornece a mesma saída quedeclare -x
por padrão.O Zsh mostra um formato não padrão, mesmo quando a compatibilidade POSIX está ativada:
Em qualquer caso, você pode extrair representações portáteis (que podem ser citadas) pesquisando uma palavra seguida por
=
. Isso não depende das palavras anteriores da linha, desde que elas não precedam imediatamente=
, o que não deveriam. Por exemplo:Observe que nem todas as entradas necessariamente possuem
=
. Isso ocorre porque as variáveis podem ser desmarcadas, mas exportadas. Essas entradas são filtradas pelogrep
comando acima, que pode ou não ser o que você deseja.Na maioria das vezes, você só quer inspecionar a saída e assim você não vai se importar se as entradas são precedidas por
export
,declare -x
,typeset -x
ou outra coisa. Então apenas corraexport -p
.Testei esses comandos no Ubuntu 16.04 LTS com versões oficialmente empacotadas de cada shell.
fonte
Variáveis que NÃO são exportadas podem ser vistas na saída do
declare
comando no bash.Variáveis que são exportados pode ser visto de saída do
declare -x
ouexport
comando no bash.fonte