Hoe voeg ik omgevingsvariabelen toe?

Ik run Ubuntu 11.04. Ik gebruik de terminal om een bash-sessie te starten, en ik wil een omgevingsvariabele toevoegen:

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

Maar het's werkt niet. Het laat alle variabelen zien met THEVAR als laatste, maar een andere oproep aan env laat THEVAR niet meer zien- env | grep THEVAR retourneert niets.

Op dezelfde manier voegen scripts met export (export THEVAR=/voorbeeld) of andere variabele-toewijzingen (THEVAR=/voorbeeld) de omgevingsvariabele niet toe.

Ik weet dat ik iets verkeerd doe, ik weet dat het iets eenvoudigs zou moeten zijn, maar ik kan gewoon niet vinden wat.

UPDATE: De echte bedoeling van mijn vraag was deze: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell

(Hoe dan ook, ik'zal het meest gestemde antwoord kiezen en de bewerkte titel laten staan -dat was niet wat ik vroeg)

env voert een programma uit in een gewijzigde omgeving, en verwijdert dan alle wijzigingen.

Oplossing

Om de variabele alleen voor de huidige shell in te stellen:

VARNAME="my value"

Om hem in te stellen voor de huidige shell en alle processen gestart vanuit de huidige shell:

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

Om het permanent in te stellen voor alle toekomstige bash sessies voeg je zo'n regel toe aan je .bashrc bestand in je $HOME directory.

Om het permanent in te stellen, en systeembreed (alle gebruikers, alle processen) voeg je de set variabele toe in /etc/environment:

sudo -H gedit /etc/environment

Dit bestand accepteert alleen variabelentoewijzingen zoals:

VARNAME="my value"

Gebruik hier niet het export sleutelwoord.

Je moet uitloggen bij de huidige gebruiker en opnieuw inloggen zodat omgevingsvariabelen veranderingen plaatsvinden.

Commentaren (7)

Om een omgevingsvariabele eenmalig in te stellen, gebruik het export commando in de prompt, niet in een shell script:

$ export THEVAR=/example

De variabele zal worden ingesteld voor de rest van de shell sessie of totdat hij niet meer wordt ingesteld.

Om een omgevingsvariabele elke keer in te stellen, gebruik het export commando in het .bashrc bestand (of het juiste initialisatie bestand voor uw shell).

Om een omgevingsvariabele vanuit een script in te stellen, gebruikt u het export commando in het script, en vervolgens source het script. Als u het script uitvoert, zal het niet werken.

Voor een uitleg van het verschil tussen sourcen en uitvoeren zie dit antwoord: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788

Commentaren (1)

Om permanent een nieuwe omgevingsvariabele toe te voegen in Ubuntu (alleen getest in 14.04), gebruikt u de volgende stappen:

  1. Open een terminal (door op CtrlAltT te drukken)
  2. sudo -H gedit /etc/environment
  3. Typ uw wachtwoord
  4. Bewerk het zojuist geopende tekstbestand: bv. als je FOO=bar wilt toevoegen, schrijf dan FOO=bar in een nieuwe regel
  5. Sla het op
  6. Eenmaal opgeslagen, log uit en log weer in.
  7. Uw gewenste wijzigingen zijn doorgevoerd.
Commentaren (5)