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í env
už THEVAR
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ší.
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í.
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.
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ů:
sudo -H gedit /etc/environment
FOO=bar
, pak stačí napsat FOO=bar
na nový řádek.