Sto cercando di capire l'uso del export
comando.
Ho provato a usare man export
, ma non esiste un manuale per questo comando.
Qualcuno può aiutarmi per favore a capire l'uso di export
in UNIX?
Sto cercando di capire l'uso del export
comando.
Ho provato a usare man export
, ma non esiste un manuale per questo comando.
Qualcuno può aiutarmi per favore a capire l'uso di export
in UNIX?
Risposte:
Quando si esegue un programma, il programma figlio eredita le sue variabili di ambiente dal padre. Ad esempio, se $HOME
è impostato su /root
nel genitore, anche la $HOME
variabile del bambino è impostata su /root
.
Questo vale solo per le variabili di ambiente contrassegnate per l'esportazione. Se si imposta una variabile nella riga di comando come
$ FOO="bar"
Quella variabile non sarà visibile nei processi figlio. A meno che non lo esporti:
$ export FOO
Puoi combinare queste due affermazioni in una sola in bash (ma non in sh di vecchia scuola):
$ export FOO="bar"
Ecco un breve esempio che mostra la differenza tra variabili esportate e non esportate. Per capire cosa sta succedendo, sappi che sh -c
crea un processo shell figlio che eredita l'ambiente della shell genitore.
$ FOO=bar
$ sh -c 'echo $FOO'
$ export FOO
$ sh -c 'echo $FOO'
bar
Nota: per ottenere assistenza sui comandi integrati della shell, utilizzare help export
. Gli incorporati della shell sono comandi che fanno parte della tua shell piuttosto che come eseguibili indipendenti /bin/ls
.
Unix
I comandi env, set e printenv visualizzano tutte le variabili di ambiente e i loro 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 quel nome di variabile come unico argomento al comando.
In Unix possono anche essere usati i seguenti comandi, 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 a questo a
VARIABLE=value; export VARIABLE
piuttosto che assegnare ed esportare contemporaneamente. Il set
comando in C Shell è per le variabili della shell anziché per le variabili di ambiente; setenv
è la controparte di export
. Il set
comando nelle shell derivate da Bourne stampa tutte le variabili, non solo le variabili esportate (ambiente). Almeno storicamente, il env
comando è 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.
export
è un comando integrato della bash
shell e di altre varianti della shell Bourne . Viene utilizzato per contrassegnare una variabile di shell per l'esportazione in processi figlio.