I'm running Ubuntu 11.04. S terminalom zaženem sejo bash in želim dodati okoljsko spremenljivko:
$r@hajt:~$ env THEVAR=/example
Vendar to ne deluje. Prikaže vse spremenljivke, pri čemer je THEVAR zadnja, vendar naslednji klic env
ne pokaže več THEVAR
- env | grep THEVAR
ne vrne ničesar.
Podobno tudi skripte z izvozom (export THEVAR=/vzorec
) ali drugimi dodelitvami spremenljivk (THEVAR=/vzorec
) ne dodajo spremenljivke okolja.
Vem, da nekaj delam narobe, vem, da bi moralo biti nekaj preprostega, vendar ne morem ugotoviti, kaj.
UPDATE: Pravi pomen mojega vprašanja je bil naslednji: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(Kakorkoli že, izbral bom najbolj glasen odgovor in pustil spremenjen naslov -to ni bilo tisto, kar sem spraševal)
env
zažene program v spremenjenem okolju, nato pa odpravi vse spremembe.
Nastavitev spremenljivke samo za trenutno lupino:
VARNAME="my value"
Za nastavitev za trenutno lupino in vse procese, ki se zaženejo iz trenutne lupine::
export VARNAME="my value" # shorter, less portable version
Za trajno nastavitev za vse prihodnje seje basha dodajte takšno vrstico v datoteko .bashrc
v imeniku $HOME
.
Če jo želite nastaviti trajno in sistemsko (vsi uporabniki, vsi procesi), dodajte spremenljivko set v /etc/environment:
sudo -H gedit /etc/environment
Ta datoteka sprejema samo dodelitve spremenljivk, kot so:
VARNAME="my value"
Tu ne uporabljajte ključne besede export
.
Iz trenutnega uporabnika se morate odjaviti in ponovno prijaviti, da se spremenljivke okolja spremenijo.
Če želite enkrat nastaviti spremenljivko okolja, uporabite ukaz export
v pozivnem oknu in ne v skripti lupine:
$ export THEVAR=/example
Spremenljivka bo nastavljena do konca seje lupine ali dokler je ne nastavite.
Če želite spremenljivko okolja nastaviti vsakič, uporabite ukaz export
v datoteki .bashrc
(ali ustrezni inicializacijski datoteki za vašo lupino).
Če želite nastaviti spremenljivko okolja iz skripte, uporabite ukaz export
v skripti in nato izvorno
skripto. Če skripto izvedete, ne bo delovala.
Za razlago razlike med izvorom in izvajanjem glejte ta odgovor: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788
Za trajno dodajanje nove spremenljivke okolja v Ubuntuju (preizkušeno samo v različici 14.04) uporabite naslednje korake:
sudo -H gedit /etc/environment
FOO=bar
, v novo vrstico zapišite FOO=bar
.