Umgebungsvariablen ermöglichen es, das Verhalten von Software zu steuern, ohne den Quellcode zu ändern. Die meisten Linux-Distributionen bringen bereits vordefinierte Umgebungsvariablen mit. Sie können zusätzlich eigene Variablen erstellen, um Konfigurationsdaten zu speichern, das Verhalten von Anwendungen zu steuern und Werte zwischen Prozessen und Shell-Skripten auszutauschen.
In dieser Anleitung erfahren Sie, wie Sie Umgebungsvariablen in Linux anzeigen, erstellen, ändern und löschen. Außerdem lernen Sie, wie Variablen über Sitzungen hinweg bestehen bleiben, wie man globale Variablen für alle Benutzer setzt und wie sich diese in Shell-Skripten nutzen lassen.
Vorhandene Umgebungsvariablen anzeigen
Linux stellt vordefinierte Umgebungsvariablen wie HOME, USER, PWD und PATH bereit. Gehen Sie wie folgt vor, um diese Variablen in einer Terminal-Sitzung anzuzeigen.
Alle aktuellen Umgebungsvariablen auflisten:
$ envBeispielausgabe:
PWD=/home/user
HOME=/home/user
USER=user
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/gamesAlternativ kann der Befehl printenv verwendet werden, um alle Umgebungsvariablen anzuzeigen.
Aktuellen Linux-Benutzernamen ausgeben:
$ echo $USEREine bestimmte Variable im Schlüssel-Wert-Format mit grep anzeigen:
$ env | grep USEROder alternativ:
$ printenv | grep USERPassende Infrastruktur bei centron
Zum Ausprobieren braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff gibt es ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
Temporäre Umgebungsvariablen erstellen
Um eine temporäre Umgebungsvariable in Linux zu definieren, schreiben Sie den Variablennamen (Schlüssel) in Großbuchstaben und weisen ihm einen Zeichenkettenwert zu. Temporäre Variablen gelten nur für die aktuelle Terminal-Sitzung und werden nach dem Schließen der Shell automatisch entfernt.
Neue Umgebungsvariable GREETING erstellen:
$ GREETING=HelloWert in Anführungszeichen setzen, wenn er Leerzeichen enthält:
$ GREETING="Hello World"Variable exportieren, damit auch Kindprozesse darauf zugreifen können:
$ export GREETINGPrüfen, ob die Variable gesetzt ist:
$ echo $GREETINGAusgabe:
HelloTemporäre Variablen gelten nur während der aktuellen Shell-Sitzung. Nach dem Schließen des Terminals werden sie automatisch entfernt.
Umgebungsvariablen dauerhaft speichern
Um Variablen über Terminal-Sitzungen hinweg zu behalten, definieren Sie diese in der Konfigurationsdatei Ihrer Shell, zum Beispiel ~/.bashrc oder ~/.bash_profile bei Nutzung der Bash-Shell. So wird die Variable bei jedem Start einer neuen Sitzung automatisch geladen.
~/.bashrc im Editor öffnen:
$ nano ~/.bashrcFolgende Zeile am Ende der Datei hinzufügen:
export GREETING=HelloDatei speichern und schließen.
Shell-Konfiguration neu laden, um die Änderungen zu übernehmen:
$ source ~/.bashrcÜberprüfen, ob die Umgebungsvariable verfügbar ist:
$ echo $GREETINGAusgabe:
HelloÖffnen Sie ein neues Terminalfenster und prüfen Sie, ob die Variable weiterhin vorhanden ist:
$ echo $GREETINGUmgebungsvariablen ändern
Umgebungsvariablen können sowohl temporär als auch dauerhaft geändert werden. Einige Variablen sind jedoch für den Systembetrieb kritisch und sollten nur mit Vorsicht angepasst werden. Stellen Sie sicher, dass Sie die nötigen Berechtigungen besitzen und die Auswirkungen verstehen. So ändern Sie die Variable GREETING:
Wert der GREETING-Variable in der aktuellen Sitzung aktualisieren:
$ export GREETING=HiNeuen Wert prüfen:
$ echo $GREETINGAusgabe:
HiShell-Konfigurationsdatei öffnen, um die Änderung dauerhaft zu speichern:
$ nano ~/.bashrcWert der GREETING-Definition anpassen:
export GREETING=HiDatei neu laden, um die Änderungen zu übernehmen:
$ source ~/.bashrcUmgebungsvariablen entfernen
Um eine Umgebungsvariable zu löschen, verwenden Sie den Befehl unset. Falls die Variable in der Shell-Konfigurationsdatei definiert ist, entfernen Sie auch dort den Eintrag, damit sie nicht erneut geladen wird.
GREETING-Variable entfernen:
$ unset GREETINGÜberprüfen, ob die Variable entfernt wurde:
$ echo $GREETINGWenn keine Ausgabe erfolgt, wurde die Variable erfolgreich gelöscht.
unset entfernt Variablen nur aus der aktuellen Sitzung. Ist die Variable beispielsweise in ~/.bashrc definiert, erscheint sie in neuen Sitzungen erneut, solange der Eintrag nicht ebenfalls dort gelöscht wird.
Globale Umgebungsvariablen erstellen
Standardmäßig gelten Umgebungsvariablen nur für den Benutzer, der sie erstellt hat. Möchten Sie Variablen systemweit für alle Benutzer und Umgebungen verfügbar machen, fügen Sie diese in die Datei /etc/environment ein. Diese Datei wird beim Login ausgewertet und eignet sich für globale Werte ohne shell-spezifische Syntax. Gehen Sie wie folgt vor, um eine globale Variable zu erstellen und zu überprüfen:
/etc/environment mit Nano öffnen:
$ sudo nano /etc/environmentNur Benutzer mit Root-Rechten können /etc/environment bearbeiten, da Änderungen alle Benutzer betreffen. Speichern Sie dort keine Passwörter oder vertraulichen Daten, da diese von allen Benutzern gelesen werden können.
Variable ohne export-Schlüsselwort hinzufügen:
GLOBAL_GREETING=HelloVerwenden Sie kein export. Das pam_env-Modul, das diese Datei auswertet, unterstützt keine Shell-Syntax oder Befehle wie export.
Datei speichern und schließen.
Melden Sie sich ab und wieder an, um die Umgebung neu zu laden. Das System liest /etc/environment nur während des Login-Vorgangs (über SSH, Terminal oder GUI) ein.
Mit dem Befehl env prüfen, ob die Variable verfügbar ist:
$ envAusgabe:
GLOBAL_GREETING=HelloNeuen Benutzer anlegen:
$ sudo adduser newuserZum neuen Benutzer wechseln:
$ su - newuserPasswort eingeben, wenn Sie dazu aufgefordert werden.
Prüfen, ob die globale Umgebungsvariable für den neuen Benutzer verfügbar ist:
$ echo $GLOBAL_GREETINGAusgabe:
HelloUm die Variable zu entfernen, löschen Sie den Eintrag aus /etc/environment und melden Sie sich erneut ab und an.
Umgebungsvariablen in einem Bash-Skript verwenden
Umgebungsvariablen – ob benutzerdefiniert oder global – lassen sich auch in Bash-Skripten dynamisch einbinden. So nutzen Sie die globale Variable GLOBAL_GREETING in einem einfachen Skript:
Neue Skriptdatei greeting.sh erstellen:
$ nano greeting.shFolgendes Skript einfügen, um die Umgebungsvariable zu referenzieren:
#!/bin/bash
echo "${GLOBAL_GREETING}! Welcome."Verwenden Sie geschweifte Klammern ({}), um den Variablennamen klar abzugrenzen, wenn direkt danach Sonderzeichen oder Text folgen. So wird das Ausrufezeichen eindeutig dem Text zugeordnet.
Datei speichern und schließen.
Skript ausführbar machen:
$ chmod +x greeting.shSkript ausführen:
$ ./greeting.shAusgabe:
Hello! Welcome.Variablen können auch innerhalb anderer Variablenzuweisungen verschachtelt werden. Beispiel: GREETING="Hi! $USER" erweitert $USER beim Ausführen. Diese Art der Expansion funktioniert jedoch nur, wenn die Variable in einer Shell-Konfigurationsdatei wie .bashrc definiert ist, nicht in /etc/environment.
Fazit
In diesem Artikel haben Sie gelernt, wie man Umgebungsvariablen in Linux verwaltet. Sie haben gesehen, wie man Variablen anzeigt, erstellt, ändert und entfernt, wie man sie über Terminal-Sitzungen hinweg beibehält und wie man globale Variablen für alle Benutzer definiert. Außerdem wissen Sie nun, wie sich diese Variablen in Bash-Skripten verwenden lassen, um Arbeitsabläufe zu optimieren und die Steuerung von Anwendungen zu verbessern.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.