Umgebungsvariablen steuern, wie sich dein System und deine Programme verhalten. Sie legen fest, welchen Editor du nutzt, wo ausführbare Dateien liegen und welche Sprache das System verwendet.
Shell-Variablen vs. Umgebungsvariablen
Die Shell unterscheidet zwei Arten von Variablen:
- Shell-Variablen gelten nur in der aktuellen Shell-Instanz.
- Umgebungsvariablen werden an alle Kindprozesse vererbt.
Das Format ist bei beiden gleich:
NAME=wert
NAME="Wert mit Leerzeichen"
PATH=/usr/bin:/usr/local/bin
Beachte: Kein Leerzeichen um das =. Mehrere Werte trennst du mit :.
Umgebungsvariablen anzeigen
Einzelne Variable ausgeben
Mit printenv gibst du den Wert einer bestimmten Variable aus:
printenv HOME
/home/dom
Du kannst auch mehrere Variablen auf einmal abfragen:
printenv USER SHELL LANG
dom
/bin/bash
de_DE.UTF-8
Alle Umgebungsvariablen auflisten
Ohne Argumente zeigt printenv alle Umgebungsvariablen:
printenv
Die Ausgabe kann lang sein. Pipe sie durch less zum Scrollen:
printenv | less
Wichtige Umgebungsvariablen
| Variable | Bedeutung |
|---|---|
HOME | Heimatverzeichnis des Benutzers |
USER | Aktueller Benutzername |
PATH | Suchpfad für ausführbare Dateien |
SHELL | Pfad zur Login-Shell |
LANG | Systemsprache und Zeichensatz |
EDITOR | Standard-Texteditor |
TERM | Terminaltyp |
Shell-Variablen anzeigen
Der Befehl set zeigt alle Variablen inklusive Shell-Variablen und Funktionen:
set | less
Mit echo gibst du eine einzelne Variable aus:
echo $BASH_VERSION
5.1.16(1)-release
Variablen setzen
Shell-Variable erstellen
Eine Shell-Variable erstellst du durch einfache Zuweisung:
MEINE_VAR="Hallo Welt"
Prüfe den Wert:
echo $MEINE_VAR
Hallo Welt
Diese Variable existiert nur in der aktuellen Shell. Kindprozesse kennen sie nicht:
bash -c 'echo $MEINE_VAR'
Die Ausgabe ist leer.
Umgebungsvariable erstellen
Mit export machst du eine Variable zur Umgebungsvariable:
export MEINE_VAR="Hallo Welt"
Oder in zwei Schritten:
MEINE_VAR="Hallo Welt"
export MEINE_VAR
Jetzt ist sie auch in Kindprozessen verfügbar:
bash -c 'echo $MEINE_VAR'
Hallo Welt
Variable löschen
Mit unset entfernst du eine Variable:
unset MEINE_VAR
Variablen dauerhaft speichern
Variablen, die du in der Shell setzt, gehen beim Schließen der Sitzung verloren. Für dauerhafte Variablen trägst du sie in Konfigurationsdateien ein.
Systemweite Variablen
Für alle Benutzer definierst du Variablen in /etc/environment:
JAVA_HOME="/usr/lib/jvm/java-17"
Diese Datei verwendet kein export und keine Shell-Syntax.
Benutzerspezifische Variablen
Trage deine Variablen in ~/.bashrc (für Bash) oder ~/.zshrc (für Zsh) ein:
export EDITOR="nano"
export PATH="$HOME/bin:$PATH"
Änderungen übernehmen
Nach dem Bearbeiten lädst du die Datei neu:
source ~/.bashrc
Oder starte eine neue Shell-Sitzung.
Zusammenfassung
| Aufgabe | Befehl |
|---|---|
| Umgebungsvariable anzeigen | printenv NAME |
| Alle Umgebungsvariablen | printenv |
| Variable setzen | export NAME="wert" |
| Variable löschen | unset NAME |
| Dauerhaft speichern | In ~/.bashrc eintragen |