GNU/Linux >> Znalost Linux >  >> Linux

Nastavení proměnných prostředí Linuxu

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


Linux
  1. Proměnné uživatelského prostředí S „su“ a „sudo“ v Linuxu

  2. Linux Mint – trvalé přidávání proměnných prostředí

  3. Jak nastavit proměnné prostředí Linuxu pomocí Ansible

  1. Nastavení proměnných prostředí prostředí | BASH Shell

  2. Jak nastavit/vytvořit proměnné prostředí a prostředí v Linuxu

  3. Jsou proměnné prostředí viditelné pro neprivilegované uživatele v systému Linux?

  1. Linux – Jsou proměnné prostředí viditelné pro neprivilegované uživatele na Linuxu?

  2. Linuxový exportní příkaz

  3. Příklady exportních příkazů pro Linux (jak nastavit proměnné prostředí)