> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/cli/de/anleitungen/secrets/replace-env-files.md).

# Die Passwörter aus einer .env-Datei herausnehmen

Ersetzen Sie die Passwörter in Ihren .env-Dateien durch devo-Referenzen, committen Sie die Datei und führen Sie Ihre Anwendung mit devo secret run --env-file aus.

Eine Datei `.env` ist praktisch, aber sie ist auch die Datei, aus der am ehesten ein Passwort nach außen gelangt: in ein Ticket kopiert, versehentlich gepusht oder mit einem neuen Teammitglied geteilt. Mit Devolutions CLI behält die Datei ihre Form und ihre Variablennamen, aber jedes Geheimnis wird zu einer Referenz `devo://`. Die Datei kann dann sicher committet werden, und die Werte erreichen Ihre Anwendung erst, wenn sie startet.

## Die Werte durch Referenzen ersetzen

1. Öffnen Sie Ihre `.env`-Datei.
2. Finden Sie für jedes Geheimnis seine Referenz. Siehe [Die Referenz zu einem Geheimnis finden](/cli/de/anleitungen/secrets/find-a-reference.md).
3. Ersetzen Sie den Wert durch die Referenz. Lassen Sie die anderen Werte unverändert.

```bash
# Database
DB_HOST=db.internal.example
DB_USER=devo://ws/<workspace-id>/vault/<vault-id>/entry/<entry-id>/field/username
DB_PASSWORD=devo://ws/<workspace-id>/vault/<vault-id>/entry/<entry-id>/field/password

# A reference can also sit inside a longer value
DATABASE_URL="postgres://app:{{ devo://ws/<workspace-id>/vault/<vault-id>/entry/<entry-id>/field/password }}@db.internal.example/app"
```

{% hint style="info" %}
Bevorzugen Sie kanonische Referenzen (`devo://ws/…`) in Dateien, die Sie committen. Sie funktionieren weiter, wenn ein Eintrag umbenannt wird, und sie werden gegen den Workspace aufgelöst, dem sie gehören, unabhängig vom aktuellen Kontext.
{% endhint %}

## Führen Sie Ihre App mit der Datei aus

```bash
devo secret run --env-file .env -- npm start
```

Devolutions CLI liest die Datei, löst jede darin enthaltene Referenz auf und startet Ihre App mit allen Variablen der Datei in ihrer Umgebung: den aufgelösten Geheimnissen und den Klartextwerten. Aufgelöste Werte werden in der Ausgabe der App verborgen, wie bei jedem `devo secret run`. Siehe [Einen Befehl mit seinen Geheimnissen ausführen](/cli/de/anleitungen/secrets/run-with-secrets.md).

Sie können `--env-file` mit `--env-ref` kombinieren. Wenn eine Variable der Datei denselben Namen hat wie eine Variable Ihrer Shell, die schon eine Referenz enthält, gewinnt die Datei. Die Variable Ihrer Shell wird trotzdem zuerst aufgelöst: Wenn ihre Referenz defekt ist, schlägt der Start trotzdem fehl. Entfernen Sie sie oder korrigieren Sie sie.

## Wie Devolutions CLI die Datei liest

<table><thead><tr><th width="240">IN DER DATEI</th><th>WAS PASSIERT</th></tr></thead><tbody><tr><td><code>KEY=value</code></td><td>Eine Variable pro Zeile. Leerzeichen um den Namen und den Wert werden entfernt.</td></tr><tr><td>Leere Zeilen und Zeilen, die mit <code>#</code> beginnen</td><td>Ignoriert.</td></tr><tr><td><code>KEY="value"</code> or <code>KEY='value'</code></td><td>Ein Paar zusammengehöriger Anführungszeichen um den gesamten Wert wird entfernt.</td></tr><tr><td>Eine Referenz in einem Wert</td><td>Durch das Geheimnis ersetzt. Schließen Sie es in <code>{{ }}</code> ein, wenn anderer Text daran grenzt, damit Devolutions CLI weiß, wo es endet.</td></tr><tr><td><code>$NAME</code>, <code>${NAME}</code> oder <code>${NAME:-default}</code> innerhalb einer Referenz</td><td>Ersetzt durch den Wert einer Umgebungsvariable, zum Beispiel um die Workspace-ID je Umgebung zu wählen. Ohne Standardwert muss die Variable gesetzt und nicht leer sein.</td></tr></tbody></table>

Einiges, das in manchen `.env`-Ladern funktioniert, funktioniert hier nicht:

* Variablennamen verwenden nur Buchstaben, Ziffern und Unterstriche und dürfen nicht mit einer Ziffer beginnen. Eine Zeile, die mit `export` beginnt, wird abgelehnt.
* Ein `#` nach einem Wert ist kein Kommentar: er wird Teil des Werts.
* Ein Wert kann sich nicht über mehrere Zeilen erstrecken.
* Derselbe Variablenname kann nicht zweimal vorkommen, und auch nicht sowohl in der Datei als auch in `--env-ref`.

## Was zu committen ist

<table><thead><tr><th width="240">DATEI</th><th>COMMITTEN?</th></tr></thead><tbody><tr><td>Eine <code>.env</code>-Datei nur mit Referenzen</td><td>Ja. Eine Referenz enthält Namen oder IDs, nie einen Wert. Ohne Zugriff auf den Tresor öffnet sie nichts.</td></tr><tr><td>Eine von <code>devo secret inject</code> erzeugte Datei</td><td>Nein. Er enthält die Werte im Klartext. Fügen Sie ihn zu <code>.gitignore</code> hinzu.</td></tr><tr><td>Eine <code>.env</code>-Datei, die noch ein Passwort enthält</td><td>Nein. Ersetzen Sie den Wert zuerst durch eine Referenz.</td></tr></tbody></table>

{% hint style="warning" %}
Wenn ein Passwort einmal committet wurde, entfernt es das Entfernen aus der Datei nicht aus dem Verlauf des Repositorys. Ändern Sie das Passwort in Ihrem Tresor, zum Beispiel mit [devo secret set](/cli/de/anleitungen/secrets/update-a-secret.md).
{% endhint %}

## Wenn es nicht funktioniert

* "Environment file lines must use KEY=value syntax.": Eine Zeile hat kein `=` oder beginnt mit einem. Korrigieren Sie diese Zeile, oder machen Sie sie mit `#` zu einem Kommentar.
* Eine Referenz wird nicht aufgelöst: siehe [Eine Geheimnisreferenz wird nicht aufgelöst](/cli/de/hilfe/troubleshooting/reference-does-not-resolve.md).
* Ihr Werkzeug liest nur eine Konfigurationsdatei, keine Umgebungsvariablen: siehe [Eine Konfigurationsdatei aus einer Vorlage füllen](/cli/de/anleitungen/secrets/fill-a-template.md).

## Weiter

* [Run a command with its secrets](/cli/de/anleitungen/secrets/run-with-secrets.md)
* [Give an agent a credential without exposing it](/cli/de/anleitungen/ai-agents/run-an-agent.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/cli/de/anleitungen/secrets/replace-env-files.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
