> 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/da/vejledninger/secrets/replace-env-files.md).

# Tag adgangskoderne ud af en .env-fil

Erstat adgangskoderne i .env-filerne med devo-referencer, commit filen, og kør programmet med devo secret run --env-file.

En fil `.env` er praktisk, men det er også den fil der lettest lader en adgangskode slippe ud. Kopieret til en sag, pushet ved en fejl eller delt med en ny holdkammerat. Med Devolutions CLI beholder filen sin form og sine variabelnavne, men hver hemmelighed bliver en reference `devo://`. Filen kan derefter committes trygt, og værdierne når appen først, når den starter.

## Erstat værdierne med referencer

1. Åbn Deres `.env`-fil.
2. Find referencen for hver hemmelighed. Se [Find referencen til en hemmelighed](/cli/da/vejledninger/secrets/find-a-reference.md).
3. Erstat værdien med referencen. Lad de andre værdier være som de er.

```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" %}
Foretræk kanoniske referencer (`devo://ws/…`) i filer De committer. De bliver ved med at virke når en post omdøbes, og de løses mod det arbejdsområde der ejer dem, uanset den aktuelle kontekst.
{% endhint %}

## Kør Deres app med filen

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

Devolutions CLI læser filen, løser hver reference den indeholder, og starter programmet med alle filens variabler i dets miljø: de løste hemmeligheder og klartekstværdierne. Løste værdier skjules i det programmet udskriver, som ved enhver `devo secret run`. Se [Kør en kommando med dens hemmeligheder](/cli/da/vejledninger/secrets/run-with-secrets.md).

De kan kombinere `--env-file` med `--env-ref`. Hvis en variabel i filen har det samme navn som en variabel i shellen der allerede indeholder en reference, vinder filen. Shellens variabel løses stadig først. Hvis dens reference er i stykker, mislykkes starten alligevel. Fjern den, eller ret den.

## Hvordan Devolutions CLI læser filen

<table><thead><tr><th width="240">I FILEN</th><th>HVAD DER SKER</th></tr></thead><tbody><tr><td><code>KEY=value</code></td><td>Én variabel pr. linje. Mellemrum omkring navnet og værdien fjernes.</td></tr><tr><td>Tomme linjer og linjer der starter med <code>#</code></td><td>Ignoreret.</td></tr><tr><td><code>KEY="value"</code> or <code>KEY='value'</code></td><td>Ét par matchende anførselstegn omkring hele værdien fjernes.</td></tr><tr><td>En reference inde i en værdi</td><td>Erstattet af hemmeligheden. Ombryd den med <code>{{ }}</code> når anden tekst rører den, så Devolutions CLI ved hvor den slutter.</td></tr><tr><td><code>$NAME</code>, <code>${NAME}</code> eller <code>${NAME:-default}</code> inde i en reference</td><td>Erstattes af værdien af en miljøvariabel, for eksempel for at vælge arbejdsområdets id pr. miljø. Uden en standardværdi skal variablen være angivet og ikke tom.</td></tr></tbody></table>

Nogle ting der virker i visse `.env`-indlæsere, virker ikke her.

* Variabelnavne bruger kun bogstaver, cifre og understregninger og må ikke starte med et ciffer. En linje der starter med `export`, afvises.
* Et `#` efter en værdi er ikke en kommentar. Det bliver en del af værdien.
* En værdi kan ikke strække sig over flere linjer.
* Det samme variabelnavn kan ikke forekomme to gange eller både i filen og i `--env-ref`.

## Hvad der skal committes

<table><thead><tr><th width="240">FIL</th><th>COMMITTE DET?</th></tr></thead><tbody><tr><td>En <code>.env</code>-fil kun med referencer</td><td>Ja. En reference indeholder navne eller id’er, aldrig en værdi. Uden adgang til boksen åbner den ingenting.</td></tr><tr><td>En fil som <code>devo secret inject</code> har oprettet</td><td>Nej. Den indeholder værdierne i klartekst. Tilføj den til <code>.gitignore</code>.</td></tr><tr><td>En <code>.env</code>-fil der stadig indeholder en adgangskode</td><td>Nej. Erstat først værdien med en reference.</td></tr></tbody></table>

{% hint style="warning" %}
Hvis en adgangskode nogensinde er blevet committet, fjerner det den ikke fra lagerets historik at fjerne den fra filen. Skift adgangskoden i boksen, for eksempel med [devo secret set](/cli/da/vejledninger/secrets/update-a-secret.md).
{% endhint %}

## Hvis det ikke virker

* "Environment file lines must use KEY=value syntax." En linje har intet `=`, eller starter med et. Ret den linje, eller gør den til en kommentar med `#`.
* En reference løses ikke. Se [En hemmelighedsreference løses ikke](/cli/da/hjaelp/troubleshooting/reference-does-not-resolve.md).
* Værktøjet læser kun en konfigurationsfil, ikke miljøvariabler. Se [Udfyld en konfigurationsfil fra en skabelon](/cli/da/vejledninger/secrets/fill-a-template.md).

## Næste

* [Run a command with its secrets](/cli/da/vejledninger/secrets/run-with-secrets.md)
* [Give an agent a credential without exposing it](/cli/da/vejledninger/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/da/vejledninger/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.
