
Estou apenas aprendendo o básico, inclusive como declarar e mexer com variáveis. Existe uma maneira simples de exibir uma lista de todas as variáveis que nomeei? (Tudo o que encontrei pesquisando fala apenas sobre variáveis de ambiente, que pode ser o que estou procurando, mas provavelmente não?)
Responder1
A execução declare
em si lhe dará uma lista de todas as variáveis ambientaisno shell atual, incluindo aqueles que você mesmo definiu. Também incluirá quaisquer funções, a menos que você use a -p
opção que as ignora, mas adiciona algum ruído extra.
Responder2
Existem 2 tipos diferentes de variáveis (na verdade mais do que isso, mas neste contexto apenas 2), privadas e exportadas.
Variáveis privadas são variáveis que podem ser usadas no shell (ou script), mas não por programas iniciados pelo shell (ou script).
Você pode obter uma lista de todas as variáveis, incluindo as exportadas, usandodeclare
,typeset
ouset
. No bash, todos os 3 fazem a mesma coisa.Variáveis exportadas podem ser usadas tanto pelo shell quanto por programas iniciados por ele.
Você pode obter uma lista de variáveis exportadas usandoenv
.
Uma coisa importante a ser observada é ao fazer coisas como esta:
FOO="bar"
echo "$FOO"
$FOO
é uma variável privada/não exportada. O shell está realmente se expandindo $FOO
antes bar
de passar para echo
. Então, echo
na verdade, está sendo chamado como echo "bar"
.
Você pode exportar variáveis fazendo export FOO
, ou export FOO="bar"
.
Além disso, você pode exportar uma variável para apenas uma chamada a um programa adicionando a variável no início do comando. Por exemplo
FOO="bar" cmd1
cmd2
cmd1
terá acesso, $FOO
mas cmd2
não terá.