EMZETT.
Login

Umgebungsvariablen und PATH unter Linux und Windows

Kurz: Umgebungsvariablen sind benannte Werte, die Programme beim Start erben; PATH legt fest, in welchen Ordnern die Shell Programme sucht, und .env-Dateien liefern Konfiguration.

Genauer: Jeder Prozess hat eine Umgebung: Schlüssel-Wert-Paare wie HOME, USER, LANG, PATH. Kindprozesse erben sie. Sie dienen für Konfiguration (Datenbank-URL, Modus) und Geheimnisse (siehe Secrets), ohne Werte in den Code zu schreiben.

Im Detail

Linux und macOS

echo $HOME $PATH
export API_URL=https://example.org      # für diese Shell und Kindprozesse
API_URL=x node app.js                    # nur für diesen Befehl
env | sort                               # alle anzeigen
unset API_URL

Dauerhaft: in ~/.bashrc, ~/.zshrc, ~/.profile (Login-Shell), systemweit /etc/environment. Änderungen mit source ~/.bashrc oder neuem Terminal wirksam. Dienste (systemd) bekommen sie über Environment=/EnvironmentFile= in der Unit, nicht über deine Shell.

PATH

PATH ist eine Liste von Ordnern (Linux :, Windows ;). Gibst du python ein, sucht die Shell von vorn nach hinten; der erste Treffer gewinnt.

export PATH="$HOME/.local/bin:$PATH"   # eigenen Ordner voranstellen
which -a python                         # alle Treffer

Typische Probleme: falsche Version zuerst, Programm nicht gefunden (command not found), Leerzeichen/Fehler im Pfad. Füge nie . (aktueller Ordner) an den PATH an.

Windows

  • Anzeigen: echo %PATH% (cmd), $env:PATH (PowerShell).
  • Setzen (temporär): set NAME=wert (cmd), $env:NAME = "wert" (PowerShell).
  • Dauerhaft: Systemsteuerung → Umgebungsvariablen bearbeiten (Benutzer/System) oder setx NAME wert; danach neues Terminal.
  • Pfade mit Leerzeichen in Anführungszeichen.

In Programmen und Projekten

  • Lesen: process.env.NAME (Node), os.environ["NAME"] (Python), System.getenv (Java).
  • .env-Dateien (dotenv) laden Variablen für die Entwicklung; niemals ins Repository (.gitignore), eine .env.example ohne Werte beilegen.
  • 12-Faktor-Prinzip: Konfiguration über Umgebung, je Umgebung (dev/test/prod) anders.
  • Hosting (Vercel, Docker, CI) hat eigene Einstellungen; Variablen mit NEXT_PUBLIC_/VITE_ landen im Browser-Code (nie Geheimnisse!).
  • Prüfe beim Debuggen, ob die Variable im richtigen Prozess gesetzt ist.

Siehe auch: env-Dateien, Secrets verwalten, command not found