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.
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.
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
Om permanent een nieuwe omgevingsvariabele toe te voegen in Ubuntu (alleen getest in 14.04), gebruikt u de volgende stappen:
sudo -H gedit /etc/environment
FOO=bar
wilt toevoegen, schrijf dan FOO=bar
in een nieuwe regel