Ako pridám premenné prostredia?
Používam Ubuntu 11.04. Používam terminál na spustenie relácie bash a chcem pridať premennú prostredia:
$r@hajt:~$ env THEVAR=/example
Ale nefunguje to. Zobrazia sa všetky premenné, pričom THEVAR je posledná, ale pri ďalšom volaní env
sa už THEVAR
nezobrazí - env | grep THEVAR
nevráti nič.
Podobne skripty s exportom (export THEVAR=/example
) alebo iným priradením premennej (THEVAR=/example
) nepridajú'premennú prostredia.
Viem, že niečo robím zle, viem, že by to malo byť niečo jednoduché, ale jednoducho nemôžem nájsť čo.
UPDATE: Skutočný význam mojej otázky bol tento: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(Každopádne vyberiem najhlasovanejšiu odpoveď a nechám upravený názov -to nebolo to, na čo som sa pýtal)
env
spustí program v upravenom prostredí a potom všetky zmeny zruší.
Nastavenie premennej len pre aktuálny shell:
Ak ju chcete nastaviť pre aktuálny shell a všetky procesy spustené z aktuálneho shellu:
Ak ho chcete nastaviť trvalo pre všetky budúce relácie bash, pridajte takýto riadok do súboru
.bashrc
v adresári$HOME
.Ak ju chcete nastaviť natrvalo a v celom systéme (všetci používatelia, všetky procesy), pridajte premennú set do /etc/environment:
Tento súbor akceptuje iba priradenia premenných ako:
Nepoužívajte tu kľúčové slovo
export
.Musíte sa odhlásiť od aktuálneho používateľa a znova sa prihlásiť, aby sa uskutočnili zmeny premenných prostredia.
Ak chcete premennú prostredia nastaviť len raz, použite príkaz
export
vo výzve, nie v skripte shellu:Premenná bude nastavená po zvyšok relácie shellu alebo kým nebude zrušená.
Ak chcete nastaviť premennú prostredia vždy, použite príkaz
export
v súbore.bashrc
(alebo v príslušnom inicializačnom súbore pre váš shell).Ak chcete nastaviť premennú prostredia zo skriptu, použite príkaz
export
v skripte a potom skriptsource
. Ak skript spustíte, nebude fungovať.Vysvetlenie rozdielu medzi zdrojovaním a spustením nájdete v tejto odpovedi: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788
Ak chcete trvalo pridať novú premennú prostredia v Ubuntu (testované len v 14.04), postupujte nasledovne:
sudo -H gedit /etc/environment
FOO=bar
, potom stačí napísaťFOO=bar
do nového riadku