Existem dois 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 lançados pelo shell (ou script).
Você pode obter uma lista de todas as variáveis, incluindo as exportadas, usando declare
, typeset
ou set
. No bash todos os 3 fazem a mesma coisa.
-
As variáveis exportadas podem ser usadas pelo shell ou por programas lançados por ele.
Você pode obter uma lista de variáveis exportadas usando env
.
Uma coisa importante a notar é quando se faz coisas como esta:
FOO="bar"
echo "$FOO"
$FOO
é uma variável privada / não exportada. O shell está realmente expandindo $FOO
para bar
antes de passar para echo
. Então, echo
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 única chamada para um programa adicionando a variável no início do comando. Por exemplo
FOO="bar" cmd1
cmd2
cmd1
terá acesso a $FOO
, mas cmd2
não.