Příkaz export
zpřístupní proměnnou, kterou mu předáte jako parametr, podřízeným shellům. Proměnné vytvořené v shellu implicitně nejsou přístupné dalším (podřízeným) shellům vyvolaným z tohoto skriptu. Příkaz export
vytvoří proměnnou prostředí předanou jako parametr, která pak bude přístupná jiným skriptům, a programům vyvolaným z tohoto programu. Odborně řečeno, exportované proměnné vytvoří proměnné prostředí v libovolném dceřiném procesu odvozeném od tohoto shellu. To nejlépe ilustrují dva skripty nazvané export1
a export2
.
Nejprve skript export2
:
#!/bin/bash
echo "$foo"
echo "$bar"
Nyní skript export1
. Na konci skriptu voláme skript export2
.
#!/bin/bash
foo="The first meta-syntactic variable"
export bar="The second meta-syntatic variable"
./export2
Spustíme-li skript export1, dostaneme následující výstup:
xconsole$ export1
The second meta-syntatic variable
xconsole$
První řádek je prázdný, protože proměnná foo
nebyla ve skriptu export2 dostupná, takže byla vyhodnocena jako prázdná. Předáme-li příkazu echo
prázdnou proměnnou, vypíše jen znak nový řádek.
Jakmile byla proměnná exportována z shellu, bude exportována do všech skriptů spuštěných z tohoto shellu a také do všech dalších shellů, které z něj budou spuštěny. Pokud by skript export2 volal jiný skript, také on by měl k dispozici hodnotu proměnné bar
.
Příkazy set -a
nebo set -allexport
exportují všechny nově vytvořené proměnné.