Respostas:
Quando você executa um programa, o programa filho herda suas variáveis de ambiente do pai. Por exemplo, se $HOMEestiver definido como /rootpai, a $HOMEvariável da criança também será definida como /root.
Isso se aplica apenas a variáveis de ambiente marcadas para exportação. Se você definir uma variável na linha de comando, como
$ FOO="bar"
Essa variável não será visível nos processos filho. A menos que você exporte:
$ export FOO
Você pode combinar essas duas instruções em uma única no bash (mas não no sh da velha escola):
$ export FOO="bar"
Aqui está um exemplo rápido, mostrando a diferença entre variáveis exportadas e não exportadas. Para entender o que está acontecendo, saiba que sh -ccria um processo de shell filho que herda o ambiente do shell pai.
$ FOO=bar
$ sh -c 'echo $FOO'
$ export FOO
$ sh -c 'echo $FOO'
bar
Nota: Para obter ajuda sobre os comandos internos do shell, use help export. Os built-ins do shell são comandos que fazem parte do seu shell, e não executáveis independentes, como /bin/ls.
Unix
Os comandos env, set e printenv exibem todas as variáveis de ambiente e seus valores. env e set também são usados para definir variáveis de ambiente e geralmente são incorporados diretamente ao shell. printenv também pode ser usado para imprimir uma única variável, fornecendo esse nome de variável como o único argumento para o comando.
No Unix, os seguintes comandos também podem ser usados, mas geralmente dependem de um determinado shell.
export VARIABLE=value # for Bourne, bash, and related shells
setenv VARIABLE value # for csh and related shells
Você pode dar uma olhada nisso em
VARIABLE=value; export VARIABLEvez de atribuir e exportar de uma só vez. O setcomando no C Shell é para variáveis de shell em vez de variáveis de ambiente; setenvé a contraparte de export. O setcomando nos shells derivados de Bourne imprime todas as variáveis, não apenas as variáveis exportadas (ambiente). Historicamente, pelo menos, o envcomando é separado do shell (não é um built-in), embora possa ser facilmente transformado em um built-in. Ele define o ambiente para um comando específico, não o shell que o executa.
exporté um comando bashinterno do shell e de outras variantes do shell Bourne . É usado para marcar uma variável de shell para exportar para processos filho.