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

# Geheimnisse in der aktuellen Shell verwenden

Geheimnisse aus Ihrem Tresor in die aktuelle Bash- oder PowerShell-Sitzung laden mit devo secret shell enter und sie dann mit leave wiederherstellen.

`devo secret run` gibt Geheimnisse an einen einzigen Befehl. Wenn Sie sie für mehrere Befehle nacheinander brauchen, in derselben Bash- oder PowerShell-Sitzung, verwenden Sie `devo secret shell enter`. Es setzt Umgebungsvariablen in Ihrer aktuellen Shell, und `devo secret shell leave` stellt sie wieder her.

{% hint style="warning" %}
Nach `devo secret shell enter` liegen die Werte im Klartext in Ihrer Shell-Sitzung. Jedes Programm, das Sie aus dieser Sitzung starten, erbt sie, und Ihr Shell-Verlauf, Transkripte oder Debugging-Werkzeuge können sie preisgeben. Die Maskierung gilt nicht. Verlassen Sie den Bereich, sobald Sie fertig sind, und bevorzugen Sie [devo secret run](/cli/de/anleitungen/secrets/run-with-secrets.md), wann immer ein Befehl genügt.
{% endhint %}

## So funktioniert es

Ein Programm kann die Umgebung der Shell, die es gestartet hat, nicht ändern. `devo secret shell enter` setzt daher selbst nichts: Es gibt ein kurzes Skript für Ihre Shell aus, mit den Werten darin, und Sie führen dieses Skript mit `eval` (Bash) oder `Invoke-Expression` (PowerShell) aus. `--shell` gibt an, welche Art von Skript ausgegeben wird: `bash` oder `pwsh`.

## Prüfen Sie zuerst die Referenzen

`--check` führt ein wertfreies Lesen jeder Referenz aus, ohne ein Geheimnis zu lesen und ohne ein Skript auszugeben. Es bestätigt die Syntax und, bei einer benannten Referenz oder einem lokalen Profil, den Tresor und den Eintrag, aber nicht, dass das Feld gelesen werden kann: Auf Devolutions Cloud und Devolutions Server wird eine kanonische Referenz nicht nachgeschlagen. Es braucht JSON-Ausgabe:

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

## Den Bereich betreten

Wiederholen Sie `--env-ref NAME=<reference>` für jede Variable. Führen Sie das Skript nur aus, wenn der Befehl erfolgreich war.

{% 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 %}

Wenn eine Referenz nicht gelesen werden kann, gibt der Befehl nichts auf seiner Standardausgabe aus, meldet den Fehler und endet mit einem Code ungleich null: Ihre Shell bleibt unverändert.

{% hint style="danger" %}
`eval` und `Invoke-Expression` führen aus, was sie empfangen. Übergeben Sie ihnen nur die Ausgabe eines `devo secret shell enter`- oder `devo secret shell leave`-Befehls, der erfolgreich war, und mischen Sie nie seine Fehlerausgabe hinein.
{% endhint %}

## Sehen, was geladen ist

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

Der Status zeigt, ob ein Bereich aktiv ist, wie viele Bereiche verschachtelt sind und die Namen der Variablen, die der jüngste Bereich gesetzt hat. Er zeigt nie Werte und braucht eine JSON-Ausgabe.

## Den Bereich verlassen

{% 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 %}

Das Verlassen stellt jede Variable so wieder her, wie sie vor dem Betreten war: ihr vorheriger Wert, falls sie einen hatte, oder gar keine Variable, falls nicht.

## Bereiche verschachteln

Sie können einen Bereich betreten, während ein anderer aktiv ist, zum Beispiel um einen zweiten Satz von Anmeldeinformationen hinzuzufügen. Jedes `devo secret shell leave` schließt nur den jüngsten Bereich, sodass Sie in der umgekehrten Reihenfolge des Betretens verlassen.

## Gut zu wissen

* Das erzeugte Bash-Skript verwendet Bash-Funktionen, führen Sie es also in Bash aus, nicht in einer anderen POSIX-Shell. Für PowerShell funktioniert `--shell powershell` genauso wie `--shell pwsh`.
* Führen Sie `devo secret shell status` und `devo secret shell leave` mit demselben `--shell`-Wert aus, den Sie zum Betreten verwendet haben.
* `devo secret shell enter` liest weder Ihre Umgebung noch `.env`-Dateien: Listen Sie jede Variable mit `--env-ref` auf.
* Referenzen werden über den aktuellen Kontext aufgelöst. Fügen Sie `--context <context-name>` hinzu, um einen anderen Workspace zu verwenden.

## Weiter

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