Příkaz export v Linuxu se používá k vytváření proměnných prostředí. Můžete jej použít takto:
export myvar
nebo zkrácený text, jako je tento, abyste mu okamžitě přiřadili hodnotu:
export myvar=5
Hodnotu exportovaných proměnných můžete vidět pomocí příkazu echo:
echo $myvar
Aby byly změny trvalé, měli byste je přidat do souboru ~/.bashrc.
To bylo jen rychlé shrnutí. Podívejme se na to podrobně, abychom tomu lépe porozuměli.
Jak funguje příkaz export
V níže uvedeném příkladu deklaruji proměnnou shellu var a přiřadím jí hodnotu 3. Prozatím je to proměnná shellu.
[email protected]:~$ var=3
[email protected]:~$ echo $var
3
Pokud opustím terminál a otevřu nový terminál, tato proměnná shellu zmizí. Pokud chci tuto proměnnou použít ve skriptu shellu, nebude to fungovat. Podobně, pokud přepnu uživatele (a tím zahájím nový shell s tímto uživatelem), tato proměnná shellu nebude dostupná:
[email protected]:~$ su prakash
Password:
[email protected]:/home/abhishek$ echo $var
Nyní se vraťme k předchozímu uživateli (a tedy k předchozímu shellu, kde jsem deklaroval proměnnou shellu). Zde můžete vidět, že proměnná stále existuje (protože jsme tuto relaci shellu ještě neukončili):
[email protected]:/home/abhishek$ exit
exit
[email protected]:~$ echo $var
3
Takže teď, když použiji příkaz export na proměnnou var
zde se stane proměnnou prostředí a bude k dispozici všem subshellům, uživatelům a skriptům shellu v této relaci.
[email protected]:~$ export var
[email protected]:~$ echo $var
3
[email protected]:~$ su prakash
Password:
[email protected]:/home/abhishek$ echo $var
3
Všechny proměnné prostředí můžete zkontrolovat pomocí příkazu printenv:
printenv
Udělejte exportované proměnné shellu „trvalými“ pomocí souboru bashrc
Tady ale boj nekončí. Pokud zavřete relaci, ukončíte terminál, odhlásíte se nebo restartujete systém, vaše proměnná prostředí opět zmizí.
To je důvod, proč je běžnou praxí přidávat exportní příkazy do konfiguračního souboru běhového prostředí (rc) vašeho shellu.
Každý shell má tento rc soubor umístěný v domovském adresáři uživatele, který se používá k určení proměnných a další konfigurace při spuštění shellu. Jako uživatel můžete tento rc soubor použít k přizpůsobení vašeho shellu a jeho chování.
Pokud používáte bash shell, měli byste mít soubor bashrc na adrese ~/.bashrc . Tento soubor můžete buď upravit v textovém editoru, jako je Vim, nebo stačí přidat export var=3 (nebo cokoli, co exportujete) do tohoto souboru.
Po dokončení byste měli pomocí příkazu source okamžitě zpřístupnit změny.
Osvědčeným postupem je uchovávat všechny uživatelem definované proměnné prostředí na jednom místě.
Proč používat příkaz export?
Jedno z nejběžnějších použití příkazu export je, když chcete přidat něco do cesty, aby váš systém Linux našel určitý příkaz/spustitelný soubor.
Pokud jste například nainstalovali maven a chcete jej spustit, měli byste do cesty přidat umístění adresáře spustitelných souborů maven takto:
export PATH=/opt/maven/bin:$PATH
Co to dělá? Přidá toto umístění adresáře do cesty. Když se pokusíte spustit příkaz v Linuxu, váš systém hledá jeho spustitelný soubor (obvykle v adresáři bin) v adresářích uvedených v proměnné PATH.
[email protected]:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
[email protected]:~$ export PATH=/opt/maven/bin:$PATH
[email protected]:~$ echo $PATH
/opt/maven/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Vřele doporučuji přečíst si o adresářové struktuře Linuxu, abyste měli lepší představu.
Bonusový tip:Odebrání proměnné z exportovaného seznamu
Předpokládejme, že chcete odstranit „exportovanou“ proměnnou. Možnost negovat můžete použít tímto způsobem:
export -n myvar
Mějte na paměti, že to neresetuje hodnotu proměnné. Exportovaná globální proměnná se pouze změní na lokální proměnnou. Bude mít i nadále stejnou hodnotu, jakou jste nastavili dříve.
Chcete-li odstranit proměnnou z exportovaného seznamu a také odstranit její přiřazenou hodnotu, použijte možnost unset:
unset myvar
Doufám, že nyní máte lepší představu o příkazu export v Linuxu. Pokud máte pochybnosti, neváhejte se zeptat v sekci komentářů.