.env-Dateiformat: Die Syntaxregeln, über die viele stolpern

Leitfaden zum .env-Dateiformat

.env-Dateiformat: Syntax, Anführungszeichen, Kommentare, Mehrzeiler | We.Inc

Die Syntaxregeln für .env-Dateien zu Anführungszeichen, Kommentaren, leeren Werten und mehrzeiligen Schlüsseln, wo dotenv und Docker Compose sich unterscheiden, plus ein Linter, in den du eine Datei einfügen kannst.

Eine .env-Datei ist reiner Text mit einem KEY=value-Paar pro Zeile. Leerzeilen werden übersprungen, Zeilen mit # am Anfang sind Kommentare. Setze einen Wert in Anführungszeichen, wenn er Leerzeichen am Anfang oder Ende, ein #-Zeichen oder Zeilenumbrüche enthält. Es gibt keinen einheitlichen Standard, daher lesen dotenv für Node und Docker Compose einige Sonderfälle unterschiedlich.

Wie dotenv typische Zeilen liest

Die meisten kaputten .env-Dateien scheitern an denselben paar Details: einem # im Passwort, einem privaten Schlüssel, der über mehrere Zeilen eingefügt wurde, oder einem Anführungszeichen, das nie geschlossen wird. Füge deine Datei in den Linter ein, um zu sehen, was dotenv für jeden Schlüssel liest und wo Docker Compose es anders liest.

Häufige Fragen

Gibt es eine offizielle Spezifikation für .env-Dateien?

Nein. Das Format ist aus Variablenzuweisungen in der Shell entstanden, und jeder Loader dokumentiert seine eigenen Regeln. Das dotenv-Paket für Node und Docker Compose veröffentlichen beide ihre Regeln, und bei den Grundlagen sind sie sich einig: KEY=value-Zeilen, #-Kommentare und Werte in Anführungszeichen.

Sollte ich Werte in einer .env-Datei in Anführungszeichen setzen?

Nur wenn du sie brauchst. Anführungszeichen sind nötig bei Werten mit einem #-Zeichen, Leerzeichen am Anfang oder Ende oder Zeilenumbrüchen. Verwende in Compose einfache Anführungszeichen, wenn ein $ literal bleiben soll, denn Werte in einfachen Anführungszeichen werden dort nicht interpoliert.

Wie schreibe ich einen mehrzeiligen Wert, etwa einen privaten Schlüssel?

Setze ihn in doppelte Anführungszeichen und behalte die echten Zeilenumbrüche bei, was dotenv ab Version 15.0.0 unterstützt. Du kannst ihn auch in einer Zeile lassen und an jeder Umbruchstelle \n schreiben, denn doppelt gequotete Werte machen aus \n einen Zeilenumbruch.

Kann ich einen Kommentar ans Zeilenende setzen?

Ja, mit Vorsicht. dotenv behandelt ein # ohne Anführungszeichen als Beginn eines Kommentars. Docker Compose tut das nur, wenn vor dem # ein Leerzeichen steht, daher ergibt KEY=a#b in Compose a#b, in dotenv aber a. Lass zur Sicherheit vor Inline-Kommentaren ein Leerzeichen.

Überschreibt dotenv Variablen, die bereits gesetzt sind?

Nein. Standardmäßig ändert dotenv nie eine Variable, die schon in der Umgebung existiert, sodass ein Wert aus deiner Shell oder vom Host gewinnt. Setze die Option override auf true, wenn die Datei sie ersetzen soll.

Wo dotenv und Docker Compose sich unterscheiden

.env-Dateien sicher aufbewahren

dotenv und Docker Compose im direkten Vergleich

Dieselbe Zeile, gelesen von zwei Loadern

Beispiele zum Kopieren

Eine aufgeräumte .env.example

Dieselben Schlüssel wie in der echten Datei, sichere Platzhalterwerte, Kommentare zu jeder Gruppe. Committe diese Datei, nie die echte .env.

In Node laden

config() liest standardmäßig .env aus dem aktuellen Arbeitsverzeichnis. Werte, die schon in der Umgebung stehen, bleiben unverändert.

.env-Linter

Füge deine .env-Datei ein

Was dotenv aus jeder Zeile liest

Zeile

Schlüssel

Wert

Hinweise

(leerer String)

{n} Schlüssel gelesen, {v} mit Hinweisen

Noch keine Schlüssel gefunden.

Kein =-Zeichen, daher wird diese Zeile ignoriert.

Der Schlüssel enthält ein Leerzeichen. Entferne es, sonst wird die Zeile nicht wie erwartet gelesen.

Kein portabler Name. Shells erwarten Buchstaben, Ziffern und Unterstriche, nicht mit einer Ziffer am Anfang.

Das Anführungszeichen wird nie geschlossen, daher kann der Rest der Datei in diesem Wert verschwinden.

Auch in Zeile {n} gesetzt. Behalte nur einen, damit niemand raten muss, welcher gewinnt.

dotenv stoppt beim #, aber Docker Compose behält es, weil kein Leerzeichen davor steht. Setze den Wert in Anführungszeichen.

Enthält $. Docker Compose expandiert es; reines dotenv behält es so, wie es geschrieben ist.

Erstreckt sich innerhalb von Anführungszeichen über mehrere Zeilen.

Kostenlos starten · Keine Kreditkarte nötig

Verwandt: Ratgeber

Produkt

Für wen

Funktionen

Ressourcen

Unternehmen

Sitemap