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_URLDauerhaft: 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 TrefferTypische 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.exampleohne 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