Minulla on Ubuntu 11.04. Käytän terminaalia aloittaakseni bash-istunnon, ja haluan lisätä ympäristömuuttujan:
$r@hajt:~$ env THEVAR=/example
Mutta se ei toimi. Se näyttää kaikki muuttujat, joista THEVAR on viimeinen, mutta toinen env
-kutsu ei enää näytä THEVAR
- env | grep THEVAR
ei palauta mitään.
Samoin skriptit, joissa on export (export THEVAR=/example
) tai muut muuttujan määritykset (THEVAR=/example
), eivät lisää ympäristömuuttujaa.
Tiedän, että teen jotain väärin, tiedän, että sen pitäisi olla jotain yksinkertaista, mutta en vain löydä mitä.
PÄIVITYS: Kysymykseni todellinen merkitys oli tämä: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell.
(Joka tapauksessa valitsen eniten ääniä saaneen vastauksen ja jätän muokatun otsikon - se ei ollut se, mitä kysyin).
env
ajaa ohjelman muutetussa ympäristössä ja poistaa sitten kaikki muutokset.
Asettaa muuttujan vain nykyiselle komentotulkille:
VARNAME="my value"
Asettaa se nykyiselle komentotulkille ja kaikille prosesseille, jotka on käynnistetty nykyisestä komentotulkista:
export VARNAME="my value" # shorter, less portable version
Asettaaksesi sen permanentisti kaikkia tulevia bash-istuntoja varten lisää tällainen rivi $HOME
-hakemistossasi olevaan tiedostoon .bashrc
.
Asettaaksesi sen pysyvästi ja järjestelmän laajuisesti (kaikki käyttäjät, kaikki prosessit) lisää set-muuttuja /etc/environment-tiedostoon:
sudo -H gedit /etc/environment
Tämä tiedosto hyväksyy vain muuttujien määritykset kuten:
VARNAME="my value"
Älä käytä export
-avainsanaa tässä.
Sinun on kirjauduttava ulos nykyisestä käyttäjästä ja kirjauduttava uudelleen, jotta ympäristömuuttujien muutokset tapahtuvat.
Jos haluat asettaa ympäristömuuttujan kerran, käytä komentoa export
kehotteessa, ei komentosarjassa:
$ export THEVAR=/example
Muuttuja pysyy asetettuna koko komentotulkki-istunnon ajan tai kunnes asetusta ei enää muuteta.
Jos haluat asettaa ympäristömuuttujan aina, käytä komentoa export
tiedostossa .bashrc
(tai komentotulkkisi vastaavassa alustustiedostossa).
Jos haluat asettaa ympäristömuuttujan komentosarjasta, käytä komentoa export
komentosarjassa ja sitten komentosarjan lähde
. Jos suoritat skriptin, se ei toimi.
Selitys lähteen ja suorituksen välisestä erosta on tässä vastauksessa: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788.
Voit lisätä uuden ympäristömuuttujan pysyvästi Ubuntussa (testattu vain 14.04:ssä) seuraavasti:
sudo -H gedit /etc/environment
.FOO=bar
, kirjoita vain FOO=bar
uudelle riville.