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

VariableBedeutung
HOMEHeimatverzeichnis des Benutzers
USERAktueller Benutzername
PATHSuchpfad für ausführbare Dateien
SHELLPfad zur Login-Shell
LANGSystemsprache und Zeichensatz
EDITORStandard-Texteditor
TERMTerminaltyp

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

AufgabeBefehl
Umgebungsvariable anzeigenprintenv NAME
Alle Umgebungsvariablenprintenv
Variable setzenexport NAME="wert"
Variable löschenunset NAME
Dauerhaft speichernIn ~/.bashrc eintragen