> 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/fr/guides/secrets/current-shell.md).

# Utiliser des secrets dans votre shell actuel

Charger des secrets de votre coffre dans votre session Bash ou PowerShell actuelle avec devo secret shell enter, puis la restaurer avec leave.

`devo secret run` donne des secrets à une seule commande. Quand vous en avez besoin pour plusieurs commandes de suite, dans la même session Bash ou PowerShell, utilisez `devo secret shell enter`. Il définit des variables d’environnement dans votre shell actuel, et `devo secret shell leave` les remet comme elles étaient.

{% hint style="warning" %}
Après `devo secret shell enter`, les valeurs sont en texte clair dans votre session de shell. Chaque programme que vous démarrez depuis cette session en hérite, et l’historique de votre shell, les transcriptions ou les outils de débogage peuvent les exposer. Le masquage ne s’applique pas. Quittez la portée dès que vous avez terminé, et préférez [devo secret run](/cli/fr/guides/secrets/run-with-secrets.md) dès qu’une seule commande suffit.
{% endhint %}

## Fonctionnement

Un programme ne peut pas modifier l’environnement du shell qui l’a démarré. `devo secret shell enter` ne définit donc rien lui-même : il affiche un court script pour votre shell, avec les valeurs dedans, et vous exécutez ce script avec `eval` (Bash) ou `Invoke-Expression` (PowerShell). `--shell` indique quel type de script afficher : `bash` ou `pwsh`.

## Vérifiez d’abord les références

`--check` exécute une lecture sans valeur de chaque référence, sans lire aucun secret et sans afficher de script. Il confirme la syntaxe et, pour une référence nommée ou sur un profil local, le coffre et l’entrée, mais pas que le champ peut être lu : sur Devolutions Cloud et Devolutions Server, une référence canonique n’est pas recherchée. Il exige une sortie JSON :

```bash
devo secret shell enter --shell bash --env-ref DB_PASSWORD=<reference> --check --output json
```

## Entrer dans la portée

Répétez `--env-ref NAME=<reference>` pour chaque variable. Exécutez le script seulement si la commande a réussi.

{% tabs %}
{% tab title="Bash" %}

```bash
enter="$(devo secret shell enter --shell bash \
  --env-ref DB_USER=<username-reference> \
  --env-ref DB_PASSWORD=<password-reference>)" && eval "$enter"
unset enter
```

{% endtab %}

{% tab title="PowerShell" %}

```powershell
$enter = & devo secret shell enter --shell pwsh `
  --env-ref DB_USER=<username-reference> `
  --env-ref DB_PASSWORD=<password-reference> | Out-String
if ($LASTEXITCODE -eq 0) { Invoke-Expression $enter }
Remove-Variable enter
```

{% endtab %}
{% endtabs %}

Si une référence ne peut pas être lue, la commande n’affiche rien sur sa sortie standard, signale l’erreur et se termine avec un code non nul : votre shell reste inchangé.

{% hint style="danger" %}
`eval` et `Invoke-Expression` exécutent tout ce qu’ils reçoivent. Ne leur passez que la sortie d’une commande `devo secret shell enter` ou `devo secret shell leave` qui a réussi, et ne mélangez jamais sa sortie d’erreur avec elle.
{% endhint %}

## Voir ce qui est chargé

```bash
devo secret shell status --shell bash --output json
```

L’état indique si une portée est active, combien de portées sont imbriquées et les noms des variables définies par la portée la plus récente. Il n’affiche jamais les valeurs, et il a besoin d’une sortie JSON.

## Quitter la portée

{% tabs %}
{% tab title="Bash" %}

```bash
leave="$(devo secret shell leave --shell bash)" && eval "$leave"
unset leave
```

{% endtab %}

{% tab title="PowerShell" %}

```powershell
$leave = & devo secret shell leave --shell pwsh | Out-String
if ($LASTEXITCODE -eq 0) { Invoke-Expression $leave }
Remove-Variable leave
```

{% endtab %}
{% endtabs %}

Quitter restaure chaque variable comme elle était avant l’entrée : sa valeur précédente si elle en avait une, ou aucune variable si elle n’en avait pas.

## Imbriquer les portées

Vous pouvez entrer dans une portée pendant qu’une autre est active, par exemple pour ajouter un deuxième ensemble d’identifiants. Chaque `devo secret shell leave` ne ferme que la portée la plus récente, donc vous sortez dans l’ordre inverse de votre entrée.

## Bon à savoir

* Le script Bash généré utilise des fonctionnalités Bash, donc exécutez-le dans Bash, pas dans un autre shell POSIX. Pour PowerShell, `--shell powershell` fonctionne comme `--shell pwsh`.
* Exécutez `devo secret shell status` et `devo secret shell leave` avec la même valeur `--shell` que vous avez utilisée pour entrer.
* `devo secret shell enter` ne lit pas votre environnement ni les fichiers `.env` : énumérez chaque variable avec `--env-ref`.
* Les références se résolvent par le contexte actuel. Ajoutez `--context <context-name>` pour utiliser un autre espace de travail.

## Suivant

* [What stays hidden, and what doesn't](/cli/fr/guides/understand/security-model.md)
* [Run a command with its secrets](/cli/fr/guides/secrets/run-with-secrets.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/fr/guides/secrets/current-shell.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.
