Skip to main content

Beibehalten von Umgebungsvariablen und temporären Dateien

Du kannst benutzerdefinierte Umgebungsvariablen so konfigurieren, dass sie bei jedem Öffnen eines Codespace auf denselben Wert festgelegt werden. Du kannst außerdem sicherstellen, dass temporäre Dateien nicht gelöscht werden, wenn ein Codespace beendet wird.

Festlegen persistenter Umgebungsvariablen

Du kannst persistente benutzerdefinierte Umgebungsvariablen auf verschiedene Arten festlegen, je nachdem, für welche Codespaces, Repositorys oder Benutzer*innen die Variablen verfügbar sein sollen.

Für alle unten aufgeführten Methoden zum Festlegen benutzerdefinierter Variablen kannst du mithilfe einer Syntax wie echo $VARNAME auf die benutzerdefinierte Variable in deinem Codespace zugreifen.

Für einen einzelnen Codespace

Du kannst den Wert der Umgebungsvariablen in der ~/.bashrc-Datei oder in einer entsprechenden Konfigurationsdatei festlegen, wenn du die Bash-Shell nicht verwendest. Füge beispielsweise die Anweisung VARNAME=value hinzu.

Nachdem du die Änderung an dieser Datei gespeichert hast, wird der Wert beim nächsten Öffnen des Codespaces festgelegt, oder du kannst ihn sofort mit einem Befehl wie source ~/.bashrc festlegen. Die Variable bleibt festgelegt, wenn du den Codespace beendest und startest. Änderungen an Dateien im Basisverzeichnis werden jedoch zurückgesetzt, wenn du den Container neu erstellst, sodass Variablen, die in der ~/.bashrc-Datei festgelegt sind, bei einer Neuerstellung nicht beibehalten werden. Weitere Informationen findest du unter Verhindern des automatischen Löschens von temporären Dateien.

Für alle Codespaces für ein Repository

Es gibt drei Möglichkeiten, wie du persistente benutzerdefinierte Umgebungsvariablen für alle Codespaces festlegen kannst, die du für ein Repository erstellst:

  • Sie können die Konfigurationsdatei devcontainer.json für das Repository bearbeiten.
  • Sie können ein benutzerdefiniertes Dockerfile verwenden.
  • Sie können Geheimnisse für die Entwicklungsumgebung verwenden.

Bearbeiten der Konfigurationsdatei devcontainer.json für das Repository

Bearbeite die Konfigurationsdatei devcontainer.json für das Repository, und verwende die remoteEnv-Eigenschaft, um den Wert der Umgebungsvariablen festzulegen:

{
  "remoteEnv": {
    "VARNAME": "value"
  }
}

Verwende diese Methode nur für Werte, die du als Klartext an dein Repository committen möchtest. Verwenden Sie für vertrauliche Werte wie Zugriffstoken Entwicklungsumgebungs-Geheimnisse.

Die Umgebungsvariable wird im Remoteserverprozess deines Editors festgelegt und steht für Teilprozesse dieses Remoteserverprozesses (z. B. Terminals und Debugsitzungen) zur Verfügung. Die Variable ist jedoch im Container nicht allgemeiner verfügbar. Diese Methode ist nützlich, wenn du die Umgebungsvariable nicht für andere Hintergrundprozesse festlegen musst, die beim Start ausgeführt werden, und wenn du ein vorgefertigtes Image verwendest und über kein benutzerdefiniertes Dockerfile verfügst oder dieses verwenden möchtest.

Diese Einstellung wird wirksam, wenn du deinen Container neu erstellst oder einen neuen Codespace erstellst, nachdem du diese Änderung an das Repository gepusht hast. Weitere Informationen zum Anwenden von Konfigurationsänderungen auf einen Codespace findest du unter Einführung in Entwicklungscontainer.

Verwenden eines benutzerdefinierten Dockerfiles

Wenn du ein benutzerdefiniertes Dockerfile verwendest, kannst du die Umgebungsvariable dort festlegen, indem du ENV VARNAME=value hinzufügst.

Diese Methode ist nützlich, wenn du bereits über ein Dockerfile verfügst und eine Variable auf Containerebene festlegen möchtest.

Diese Einstellung wird wirksam, wenn du deinen Container neu erstellst oder einen neuen Codespace erstellst, nachdem du diese Änderung an das Repository gepusht hast. Weitere Informationen zum Anwenden von Konfigurationsänderungen auf einen Codespace findest du unter Einführung in Entwicklungscontainer.

Verwenden Sie Entwicklungsumgebungs-Geheimnisse.

Sie können Entwicklungsumgebungs-Geheimnisse für GitHub Codespaces verwenden, um benutzerdefinierte Variablen für Codespaces festzulegen, die für das Repository erstellt wurden. Weitere Informationen finden Sie unter Verwalten deiner kontospezifischen Geheimnisse für GitHub Codespaces.

Du solltest diese Methode für Umgebungsvariablenwerte verwenden, die du nicht als Klartext an das Repository committen möchtest.

Diese Einstellung wird wirksam, wenn du das nächste Mal einen Codespace für dieses Repository erstellst oder einen vorhandenen Codespace neu startest.

Für alle Codespaces, die du erstellst

Wenn du eine personalisierte Umgebungsvariable für alle Codespaces festlegen möchtest, die du erstellst, kannst du dies mithilfe einer Datei in deinem dotfiles-Repository festlegen. Füge beispielsweise VARNAME=value in der .bash_profile-Datei hinzu. Umgebungsvariablen, die du in einem Dotfile festlegst, sind vertraulich und werden nicht für andere Personen festgelegt. Weitere Informationen zu Dotfiles findest du unter Personalisieren von GitHub Codespaces für dein Konto.

Verhindern, dass temporäre Dateien automatisch gelöscht werden

Wenn du einen Codespace erstellst, wird dein Repository in das /workspaces-Verzeichnis deines Codespace geklont. Es handelt sich um ein persistentes Verzeichnis, das in den Container eingebunden wird. Alle Änderungen, die du in diesem Verzeichnis vornimmst, einschließlich dem Bearbeiten, Hinzufügen oder Löschen von Dateien, werden beibehalten, wenn du den Codespace beendest und startest oder wenn du den Container im Codespace neu erstellst.

Außerhalb des /workspaces-Verzeichnisses hat Ihr Codespace eine Linux-Verzeichnisstruktur, die abhängig vom Dev-Containerimage variiert, das zum Erstellen Ihres Codespace verwendet wird. Sie können Dateien hinzufügen oder Änderungen an Dateien außerhalb des Verzeichnisses /workspaces vornehmen. Sie können beispielsweise neue Programme installieren oder die Shell-Konfiguration in einer Datei einrichten wie z. B. ~/.bashrc. Als Nicht-Root-Benutzer*in hast du möglicherweise nicht automatisch Schreibzugriff auf bestimmte Verzeichnisse, aber die meisten Images lassen den Root-Zugriff auf diese Verzeichnisse mit dem sudo-Befehl zu.

Außerhalb von /workspaces sind die Verzeichnisse in einem Codespace mit Ausnahme des /tmp-Verzeichnisses an den Lebenszyklus des Containers gebunden. Das bedeutet, dass alle Änderungen, die Sie vornehmen, beibehalten werden, wenn Sie den Codespace beenden und starten, aber nicht, wenn Sie den Container neu erstellen. Informationen zum Erstellen von Symlinks zum Beibehalten von Daten außerhalb des /workspaces-Verzeichnisses findest du unter Neuerstellen des Containers in einem Codespace.

Das /tmp-Verzeichnis ist eine Ausnahme, da es in den Container eingebunden, aber nicht persistent ist. Daher wird der Inhalt des /tmp-Verzeichnisses bei einer Neuerstellung beibehalten, aber jedes Mal gelöscht, wenn der Codespace beendet wird. Beispielsweise wird das /tmp-Verzeichnis gelöscht, wenn bei einer Codespacesitzung nach einem Zeitraum der Inaktivität ein Timeout auftritt. Weitere Informationen finden Sie unter Festlegen des Timeoutzeitraums für GitHub Codespaces.

Wenn du über temporäre Dateien verfügst, die beim nächsten Starten des Codespaces verfügbar sein sollen, speichere sie nicht im /tmp-Verzeichnis.

Weiterführende Themen