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

# Togliere le password da un file .env

Sostituisca le password dei file .env con riferimenti devo, committi il file ed esegua l’applicazione con devo secret run --env-file.

Un file `.env` è comodo, ma è anche il file che più facilmente lascia trapelare una password: copiato in un ticket, inviato per errore o condiviso con un nuovo collega. Con Devolutions CLI il file mantiene la forma e i nomi delle variabili, ma ogni segreto diventa un riferimento `devo://`. Il file si può allora sottoporre a commit in sicurezza, e i valori raggiungono l’applicazione solo quando si avvia.

## Sostituire i valori con riferimenti

1. Apra il suo file `.env`.
2. Per ogni segreto, trovi il suo riferimento. Consulti [Trovare il riferimento a un segreto](/cli/it/guide/secrets/find-a-reference.md).
3. Sostituisca il valore con il riferimento. Lasci gli altri valori come sono.

```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" %}
Preferisca i riferimenti canonici (`devo://ws/…`) nei file di cui fa il commit. Continuano a funzionare quando una voce è rinominata e si risolvono sullo spazio di lavoro che li possiede, qualunque sia il contesto corrente.
{% endhint %}

## Esegua la sua app con il file

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

Devolutions CLI legge il file, risolve ogni riferimento che contiene e avvia l’applicazione con tutte le variabili del file nel suo ambiente: i segreti risolti e i valori in chiaro. I valori risolti sono nascosti in ciò che l’applicazione stampa, come con qualsiasi `devo secret run`. Consulti [Eseguire un comando con i suoi segreti](/cli/it/guide/secrets/run-with-secrets.md).

Può combinare `--env-file` con `--env-ref`. Se una variabile del file ha lo stesso nome di una variabile della shell che contiene già un riferimento, vince il file. La variabile della shell viene comunque risolta per prima: se il suo riferimento è rotto, l’avvio fallisce comunque. La rimuova o la corregga.

## Come Devolutions CLI legge il file

<table><thead><tr><th width="240">NEL FILE</th><th>CHE COSA SUCCEDE</th></tr></thead><tbody><tr><td><code>KEY=value</code></td><td>Una variabile per riga. Gli spazi intorno al nome e al valore vengono rimossi.</td></tr><tr><td>Le righe vuote e le righe che iniziano con <code>#</code></td><td>Ignorato.</td></tr><tr><td><code>KEY="value"</code> or <code>KEY='value'</code></td><td>Viene rimossa una coppia di virgolette corrispondenti attorno all’intero valore.</td></tr><tr><td>Un riferimento all’interno di un valore</td><td>Sostituito dal segreto. Lo racchiuda in <code>{{ }}</code> quando altro testo lo tocca, così Devolutions CLI sa dove finisce.</td></tr><tr><td><code>$NAME</code>, <code>${NAME}</code> o <code>${NAME:-default}</code> dentro un riferimento</td><td>Sostituito dal valore di una variabile d’ambiente, per esempio per scegliere l’ID dello spazio di lavoro per ambiente. Senza un valore predefinito, la variabile deve essere impostata e non vuota.</td></tr></tbody></table>

Alcune cose che funzionano in alcuni caricatori `.env` non funzionano qui:

* I nomi delle variabili usano solo lettere, cifre e trattini bassi e non possono iniziare con una cifra. Una riga che inizia con `export` viene rifiutata.
* Un `#` dopo un valore non è un commento: diventa parte del valore.
* Un valore non può estendersi su più righe.
* Lo stesso nome di variabile non può comparire due volte, né sia nel file sia in `--env-ref`.

## Che cosa sottoporre a commit

<table><thead><tr><th width="240">FILE</th><th>ESEGUIRE IL COMMIT?</th></tr></thead><tbody><tr><td>Un file <code>.env</code> con solo riferimenti</td><td>Sì. Un riferimento contiene nomi o ID, mai un valore. Senza accesso alla cassaforte non apre nulla.</td></tr><tr><td>Un file prodotto da <code>devo secret inject</code></td><td>No. Contiene i valori in testo normale. Lo aggiunga a <code>.gitignore</code>.</td></tr><tr><td>Un file <code>.env</code> che contiene ancora una password</td><td>No. Sostituisca prima il valore con un riferimento.</td></tr></tbody></table>

{% hint style="warning" %}
Se una password è stata oggetto di commit, rimuoverla dal file non la rimuove dalla cronologia del repository. Cambi la password nella cassaforte, per esempio con [devo secret set](/cli/it/guide/secrets/update-a-secret.md).
{% endhint %}

## Se non funziona

* "Environment file lines must use KEY=value syntax.": una riga non ha `=`, oppure inizia con uno. Corregga quella riga, oppure la trasformi in un commento con `#`.
* Un riferimento non si risolve: consulti [Un riferimento al segreto non si risolve](/cli/it/aiuto/troubleshooting/reference-does-not-resolve.md).
* Lo strumento legge solo un file di configurazione, non le variabili d’ambiente: consulti [Compilare un file di configurazione da un modello](/cli/it/guide/secrets/fill-a-template.md).

## Successivo

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