Toto je výňatek z manuálové stránky Bash:
exportovat [-fn] [jméno[=slovo]] ...
export -p
Dodané názvy jsou označeny pro automatický export do prostředí následně prováděných příkazů. Pokud je zadán parametr -f, názvy odkazují na funkce...
Pokud proměnnou potřebujete pouze v aktuálním prostředí, není nutné používat export.
var=value
Upravit:
Bez exportu:pouze aktuální prostředí. S exportem:aktuální prostředí a podřízená prostředí.
Zde je ukázka vlivu exportu na dostupnost proměnné v podřízeném prostředí a že změny v podřízeném prostředí neovlivňují nadřazené:
$ var1=123
$ export var2=456
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
$ var3=789 bash -c 'echo "child [$var1] [$var2] [$var3]"; var1=111; var2=222; var3=333; echo "child [$var1] [$var2] [$var3]"'
child [] [456] [789]
child [111] [222] [333]
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
Po první echo (echo "parent..."
) uvidíte „123“ a „456“, protože obě var1
a var2
jsou aktivní v současném prostředí. Nevidíte hodnotu pro var3
protože ještě není nastaveno.
Za řádkem, který začíná „var3=...
" nevidíte hodnotu pro var1
protože to nebylo vyvezeno. děláte zobrazit hodnotu pro var2
protože bylo vyvezeno. Zobrazí se hodnota var3
protože byl nastaven pouze pro podřízené prostředí .
(bash -c
je ekvivalentní spuštění skriptu s obsahem argumentu -c
volba. Skript nebo jiný spustitelný soubor nebo v tomto případě argument bash -c
se stává dítětem současného prostředí, které je v důsledku toho samozřejmě rodičem dítěte.)
Ve "skriptu" se mění hodnoty proměnné. Nyní vydává tyto nové hodnoty.
Jakmile je "skript" hotový, provádění se vrátí do nadřazeného prostředí (v tomto případě příkazového řádku). Po posledním echu uvidíte původní hodnoty, protože změny provedené v podřízeném prostředí nemají vliv na nadřazené.
Říkáte to
Vždy používám příkaz export k nastavení proměnné prostředí
Podle toho, jak jste to formuloval, to zní, jako byste se opravdu snažili zeptat, jak zajistit, aby proměnná prostředí přetrvávala. Chcete-li to provést, musíte umístit export VAR="foo"
ve vašem souboru $HOME/.bash_profile (pokud používáte bash). Pokud chcete, aby tato proměnná prostředí zůstala zachována pro všechny uživatele kromě uživatele root, přidejte ji do /etc/profile. Pokud ji chcete přidat i pro uživatele root, nastavte ji v /root/.bash_profile .
To bude fungovat pro všechny přihlašovací shelly, kde je bash shell volby. Pro nepřihlašovací shelly musíte použít .bashrc. Pro další skořápky nemám žádné postřehy, které bych mohl nabídnout :D