GNU/Linux >> Znalost Linux >  >> Linux

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

Řešení 1:

Nejlepší způsob

export VAR=value

Rozdíl

Dělám

VAR=value

nastavuje proměnnou pouze na dobu trvání skriptu (.bashrc v tomto případě). Podřízené procesy (pokud existují) skriptu nebudou mít definovaný VAR a jakmile skript skončí VAR je pryč.

export VAR=value

explicitně přidá VAR na seznam proměnných, které jsou předány podřízeným procesům. Chcete to zkusit? Otevřete shell, proveďte

PS1="foo > "
bash --norc

Nový shell dostane výchozí výzvu. Pokud místo toho uděláte něco jako

export PS1="foo > "
bash --norc

nový shell dostane výzvu, kterou jste právě nastavili.

Aktualizace: jak poznamenává Ian Kelling níže, proměnné nastavené v .bashrc přetrvávají v shellu, který pochází z .bashrc . Obecněji vždy, když shell získává skript (pomocí source scriptname příkaz) proměnné nastavené ve skriptu přetrvávají po dobu životnosti shellu.

Řešení 2:

Zdá se, že obojí funguje dobře, ale použití exportu zajistí, že proměnná bude dostupná pro podskořápky a další programy. Chcete-li to vyzkoušet, zkuste toto.

Přidejte tyto dva řádky do svého souboru .bashrc

TESTVAR="no export"
export MYTESTVAR="with export"

Poté otevřete nový shell.

Spuštěn echo $TESTVAR a echo $MYTESTVAR zobrazí obsah každé proměnné. Nyní ve stejném shellu odstraňte tyto dva řádky ze souboru .bashrc a spusťte bash pro spuštění podshell.

Spuštěn echo $TESTVAR bude mít prázdný výstup, ale běží echo $MYTESTVAR zobrazí "s exportem"


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

  2. Pokud procesy zdědí prostředí rodiče, proč potřebujeme export?

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

  1. Jaká je maximální velikost hodnoty proměnné prostředí Linux?

  2. Nastavte proměnnou prostředí ve skriptu prostředí/přístupu v aplikaci Tomcat

  3. Jaký je nejlepší způsob, jak zvládnout stav nedostatku paměti v Javě?

  1. Jak nastavit proměnnou uživatelského prostředí? (trvale, ne relace)?

  2. Jaký je nejlepší způsob nastavení proměnných prostředí podle distro/shell agnostického prostředí?

  3. Jaké je správné umístění proměnné PS1 Shell?