2011-09-07 16 views
119

Sto cercando di capire l'utilizzo del comando export.Comando di esportazione UNIX

Ho provato a utilizzare man export, ma non esiste alcun manuale per questo comando.

Qualcuno può aiutarmi a comprendere l'utilizzo di export in UNIX?

+0

è estremamente strano che non ci sia una pagina man per questo. Neanch'io ne vedo uno. – Pinocchio

risposta

177

Quando si esegue un programma, il programma figlio eredita le sue variabili di ambiente dal genitore. Ad esempio, se $HOME è impostato su /root nella genitore, la variabile $HOME del bambino viene impostata anche su /root.

Si applica solo alle variabili di ambiente contrassegnate per l'esportazione. Se si imposta una variabile alla riga di comando come

$ FOO="bar" 

Quella variabile non sarà visibile nei processi figli. A meno che non lo si esporta:

$ export FOO 

È possibile combinare queste due affermazioni in uno solo in bash (ma non in sh vecchia scuola):

$ export FOO="bar" 

Ecco un rapido esempio che mostra la differenza tra variabili esportate e non esportate. Per capire cosa sta accadendo, sappi che sh -c crea un processo di shell figlio che eredita l'ambiente della shell madre.

$ FOO=bar 
$ sh -c 'echo $FOO' 

$ export FOO 
$ sh -c 'echo $FOO' 
bar 

Nota: per ottenere aiuto sul guscio comandi incorporati utilizzano help export. I built-in della shell sono comandi che fanno parte della shell piuttosto che eseguibili indipendenti come /bin/ls.

13

Unix

I comandi env, impostare e visualizzazione printenv tutte le variabili di ambiente ei relativi valori. env e set sono anche usati per impostare variabili d'ambiente e sono spesso incorporati direttamente nella shell. printenv può anche essere usato per stampare una singola variabile dando a quella variabile il nome come unico argomento del comando.

In Unix, i seguenti comandi possono anche essere utilizzati, ma spesso dipendono da una determinata shell.

export VARIABLE=value # for Bourne, bash, and related shells 
setenv VARIABLE value # for csh and related shells 

Si può avere uno sguardo al this al

+3

Benvenuti in StackOverflow. Si noti che la classica shell Bourne richiederebbe: 'VARIABILE = valore; esportare VARIABLE' piuttosto che assegnare ed esportare contemporaneamente.Il comando 'set' in C Shell è per variabili di shell piuttosto che variabili di ambiente; 'setenv' è la controparte di' export'. Il comando 'set' nelle shell derivate da Bourne stampa tutte le variabili, non solo le variabili esportate (ambiente). Almeno storicamente, il comando 'env' è separato dalla shell (non un built-in), sebbene possa essere facilmente trasformato in un built-in. Imposta l'ambiente per un comando specifico, non la shell che lo esegue. –

1

export viene utilizzato per impostare le variabili d'ambiente. Per esempio:

export EDITOR=pico 

imposterà il vostro editor di testo predefinito di essere il comando pico.

2

export è un comando incorporato di bash shell e altri Bourne shell variants. Viene utilizzato per contrassegnare una variabile di shell per l'esportazione in processi figli.