Comando de exportação UNIX [fechado]

158

Estou tentando entender o uso do exportcomando.

Eu tentei usar man export, mas não há manual para este comando.

Alguém pode me ajudar a entender o uso do exportno UNIX?

Jake
fonte
é 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.

John Kugelman
fonte
16

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

user931841
fonte
4
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.
Jonathan Leffler
0

exporté usado para definir variáveis ​​de ambiente. Por exemplo:

export EDITOR=pico

Irá definir o seu editor de texto padrão como o picocomando.

Icaro
fonte