Hvordan legger jeg til miljøvariabler?

Jeg kjører Ubuntu 11.04. Jeg bruker terminalen til å starte en bash-økt, og jeg vil legge til en miljøvariabel:

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

Men det fungerer ikke. Den viser alle variablene med THEVAR som den siste, men et nytt kall til env viser ikke THEVAR lenger - env | grep THEVAR returnerer ingenting.

På samme måte legger ikke skript med eksport (export THEVAR=/example) eller andre variabeltilordninger (THEVAR=/example) til miljøvariabelen.

Jeg vet at jeg gjør noe galt, jeg vet at det burde være noe enkelt, men jeg kan bare ikke finne hva.

OPPDATERING: Den virkelige betydningen av spørsmålet mitt var dette: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell

(Uansett vil jeg velge det mest stemte svaret og la den redigerte tittelen stå - det var ikke det jeg spurte om)

env kjører et program i et modifisert miljø, og avviser deretter alle endringene.

Løsning

For å angi variabelen kun for gjeldende skall:

VARNAME="my value"

For å angi den for gjeldende skall og alle prosesser startet fra gjeldende skall:

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

For å angi det permanent for alle fremtidige bash-økter, legg til en slik linje i .bashrc-filen i $HOME-katalogen.

For å angi den permanent, og systemwide (alle brukere, alle prosesser), legg til set-variabelen i /etc/environment:

sudo -H gedit /etc/environment

Denne filen godtar bare variabeltilordninger som:

VARNAME="my value"

Ikke bruk nøkkelordet export her.

Du må logge ut fra gjeldende bruker og logge inn igjen slik at miljøvariablene endres.

Kommentarer (7)

For å angi en miljøvariabel én gang, bruk kommandoen export i ledeteksten, ikke i et shell-skript:

$ export THEVAR=/example

Variabelen vil være satt for resten av shell-sesjonen eller til den fjernes.

For å sette en miljøvariabel hver gang, bruk export-kommandoen i .bashrc-filen (eller den aktuelle initialiseringsfilen for skallet ditt).

For å angi en miljøvariabel fra et skript, bruk kommandoen export i skriptet, og deretter source skriptet. Hvis du kjører skriptet, vil det ikke fungere.

For en forklaring på forskjellen mellom sourcing og kjøring, se dette svaret: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788

Kommentarer (1)

For å legge til en ny miljøvariabel permanent i Ubuntu (kun testet i 14.04), bruk følgende trinn:

  1. Åpne en terminal (ved å trykke CtrlAltT)
  2. sudo -H gedit /etc/miljø.
  3. Skriv inn passordet ditt
  4. Rediger tekstfilen som nettopp ble åpnet: Hvis du f.eks. vil legge til FOO=bar, skriver du bare FOO=bar i en ny linje.
  5. Lagre den
  6. Når du har lagret, logger du av og på igjen.
  7. De ønskede endringene er gjort.
Kommentarer (5)