GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit proměnnou prostředí na příkazovém řádku a nechat ji zobrazit v příkazech?

Pokud běžím

export TEST=foo
echo $TEST

Výstupem je foo.

Pokud běžím

TEST=foo echo $TEST

To není. Jak mohu získat tuto funkci bez použití exportu nebo skriptu?

Přijatá odpověď:

Je to proto, že shell rozbalí proměnnou v příkazovém řádku před skutečně spustí příkaz a v té době proměnná neexistuje. Pokud použijete

TEST=foo; echo $TEST

bude to fungovat.

export způsobí, že se proměnná objeví v prostředí následně prováděných příkazů (jak to funguje v bash viz help export ). Pokud potřebujete, aby se proměnná objevila pouze v prostředí jednoho příkazu, použijte to, co jste vyzkoušeli, tj.:

TEST=foo your-application

Syntaxe shellu to popisuje jako funkční ekvivalentní:

export TEST=foo
your-application
unset TEST

Podrobnosti naleznete ve specifikaci.

Zajímavostí je, že export přepne příznak exportu pro proměnnou name . Pokud to tedy uděláte:

unset TEST
export TEST
TEST="foo"

TEST bude exportován, i když nebyl definován v době, kdy byl exportován. Dále však unset by z něj měl odstranit atribut export.


Linux
  1. Tipy/triky pro navigaci na příkazovém řádku Linuxu 3 - proměnná prostředí CDPATH

  2. Tipy pro navigaci na příkazovém řádku Linuxu:základy příkazů pushd a popd

  3. Jak nastavit proměnnou rovnou výstupu z příkazu v Grub2?

  1. Jak jsou závorky interpretovány na příkazovém řádku?

  2. Jak nastavit proměnnou prostředí v GDB pomocí příkazu shell?

  3. Jaký je nejlepší způsob, jak nastavit proměnnou prostředí v .bashrc?

  1. Mít krávu na příkazovém řádku Linuxu

  2. Proměnné prostředí Linux:Jak číst a nastavovat na Linux VPS

  3. Jak přiřadit výstup příkazu proměnné shellu?