Umgebungsvariablen in Linux verwalten
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:
$ env
Beispielausgabe:
PWD=/home/user
HOME=/home/user
USER=user
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Alternativ kann der Befehl printenv verwendet werden, um alle Umgebungsvariablen anzuzeigen.
Aktuellen Linux-Benutzernamen ausgeben:
$ echo $USER
Eine bestimmte Variable im Schlüssel-Wert-Format mit grep anzeigen:
$ env | grep USER
Oder alternativ:
$ printenv | grep USER
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=Hello
Wert in Anführungszeichen setzen, wenn er Leerzeichen enthält:
$ GREETING="Hello World"
Variable exportieren, damit auch Kindprozesse darauf zugreifen können:
$ export GREETING
Prüfen, ob die Variable gesetzt ist:
$ echo $GREETING
Ausgabe:
Hello
Temporä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 ~/.bashrc
Folgende Zeile am Ende der Datei hinzufügen:
export GREETING=Hello
Datei speichern und schließen.
Shell-Konfiguration neu laden, um die Änderungen zu übernehmen:
$ source ~/.bashrc
Überprüfen, ob die Umgebungsvariable verfügbar ist:
$ echo $GREETING
Ausgabe:
Hello
Öffnen Sie ein neues Terminalfenster und prüfen Sie, ob die Variable weiterhin vorhanden ist:
$ echo $GREETING
Umgebungsvariablen ä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=Hi
Neuen Wert prüfen:
$ echo $GREETING
Ausgabe:
Hi
Shell-Konfigurationsdatei öffnen, um die Änderung dauerhaft zu speichern:
$ nano ~/.bashrc
Wert der GREETING-Definition anpassen:
export GREETING=Hi
Datei neu laden, um die Änderungen zu übernehmen:
$ source ~/.bashrc
Umgebungsvariablen 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 $GREETING
Wenn 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/environment
Nur 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=Hello
Verwenden 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:
$ env
Ausgabe:
GLOBAL_GREETING=Hello
Neuen Benutzer anlegen:
$ sudo adduser newuser
Zum neuen Benutzer wechseln:
$ su - newuser
Passwort eingeben, wenn Sie dazu aufgefordert werden.
Prüfen, ob die globale Umgebungsvariable für den neuen Benutzer verfügbar ist:
$ echo $GLOBAL_GREETING
Ausgabe:
Hello
Um 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.sh
Folgendes 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.sh
Skript ausführen:
$ ./greeting.sh
Ausgabe:
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.


