é extremamente estranho que não exista uma página de manual para ele. Também não vejo um.
Pinóquio
Respostas:
226
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.
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
Bem-vindo ao StackOverflow. Observe que o shell Bourne clássico exigiria: 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.
Respostas:
Quando você executa um programa, o programa filho herda suas variáveis de ambiente do pai. Por exemplo, se
$HOME
estiver definido como/root
pai, a$HOME
variá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
Essa variável não será visível nos processos filho. A menos que você exporte:
Você pode combinar essas duas instruções em uma única no bash (mas não no sh da velha escola):
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 -c
cria um processo de shell filho que herda o ambiente do shell pai.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
.fonte
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.
Você pode dar uma olhada nisso em
fonte
VARIABLE=value; export VARIABLE
vez de atribuir e exportar de uma só vez. Oset
comando no C Shell é para variáveis de shell em vez de variáveis de ambiente;setenv
é a contraparte deexport
. Oset
comando nos shells derivados de Bourne imprime todas as variáveis, não apenas as variáveis exportadas (ambiente). Historicamente, pelo menos, oenv
comando é 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 comandobash
interno do shell e de outras variantes do shell Bourne . É usado para marcar uma variável de shell para exportar para processos filho.fonte
export
é usado para definir variáveis de ambiente. Por exemplo:Irá definir o seu editor de texto padrão como o
pico
comando.fonte