Jak přidám proměnné prostředí?

Používám Ubuntu 11.04. Pomocí terminálu spouštím relaci bash a chci přidat proměnnou prostředí:

$r@hajt:~$ env THEVAR=/example

Ale nefunguje to. Zobrazí se všechny proměnné, přičemž THEVAR je poslední, ale další volání envTHEVAR nezobrazí - env | grep THEVAR nic nevrátí.

Stejně tak skripty s exportem (export THEVAR=/example) nebo jiným přiřazením proměnné (THEVAR=/example) proměnnou prostředí nepřidají.

Vím, že dělám'něco špatně, vím, že by to mělo být něco jednoduchého, ale prostě nemůžu najít co.

UPDATE: Skutečný smysl mé otázky byl tento: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell

(Každopádně vyberu nejhlasitější odpověď a nechám upravený název -na to jsem se neptal)

env spustí program v upraveném prostředí a pak všechny změny zruší.

Řešení

Nastavení proměnné pouze pro aktuální shell:

VARNAME="my value"

Pro nastavení pro aktuální shell a všechny procesy spuštěné z aktuálního shellu:

export VARNAME="my value"      # shorter, less portable version

Pro trvalé nastavení** pro všechny budoucí relace bashe přidejte takový řádek do souboru .bashrc v adresáři $HOME.

Chcete-li ji nastavit trvale a v celém systému (všichni uživatelé, všechny procesy), přidejte proměnnou set do souboru /etc/environment:

sudo -H gedit /etc/environment

Tento soubor přijímá pouze přiřazení proměnných jako:

VARNAME="my value"

Nepoužívejte zde klíčové slovo export.

Je třeba se odhlásit od aktuálního uživatele a znovu přihlásit, aby došlo ke změně proměnných prostředí.

Komentáře (7)

Chcete-li proměnnou prostředí nastavit jednou, použijte příkaz export v příkazovém řádku, nikoli v shellovém skriptu:

$ export THEVAR=/example

Proměnná bude nastavena po zbytek relace shellu nebo dokud nebude zrušeno její nastavení.

Chcete-li proměnnou prostředí nastavit pokaždé, použijte příkaz export v souboru .bashrc (nebo v příslušném inicializačním souboru pro váš shell).

Chcete-li nastavit proměnnou prostředí ze skriptu, použijte příkaz export ve skriptu a poté zdroj skriptu. Pokud skript spustíte, nebude fungovat.

Vysvětlení rozdílu mezi sourcingem a spuštěním naleznete v této odpovědi: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788.

Komentáře (1)

Chcete-li v Ubuntu trvale přidat novou proměnnou prostředí (testováno pouze ve verzi 14.04), postupujte podle následujících kroků:

  1. Otevřete terminál (stisknutím CtrlAltT).
  2. sudo -H gedit /etc/environment
  3. Zadejte své heslo
  4. Upravte právě otevřený textový soubor: Např. pokud chcete přidat FOO=bar, pak stačí napsat FOO=bar na nový řádek.
  5. Uložte jej
  6. Po uložení se odhlaste a znovu přihlaste.
  7. Požadované změny jsou provedeny.
Komentáře (5)