Festlegen von Umgebungsvariablen
Lesezeit: 6 Minuten
![CP66owhMZeayfuKH2GO2bPS_oOhngyGdAI323rP9xVWDwm-iRQI7XDiucQ5b4ReImcq346dkAXfpNwxW-GWruOggvVYfkTo2CXPwBwwQUO9CNVcXVL74Zy3TzwYXUHGpUW3q7l8E-4 CP66owhMZeayfuKH2GO2bPS_oOhngyGdAI323rP9xVWDwm-iRQI7XDiucQ5b4ReImcq346dkAXfpNwxW-GWruOggvVYfkTo2CXPwBwwQUO9CNVcXVL74Zy3TzwYXUHGpUW3q7l8E-4](/content/dam/twilio-com/global/en/blog/legacy/2017/how-to-set-environment-variables-html/CP66owhMZeayfuKH2GO2bPS_oOhngyGdAI323rP9xVWDwm-iRQI7XDiucQ5b4ReImcq346dkAX.png)
Es gibt Dinge, die wir einfach nicht direkt in unseren Code einbetten sollten. Meist sind das Konfigurationswerte, die von der Umgebung abhängen, z. B. Debugging-Flags oder Zugriffstoken für APIs wie Twilio. Umgebungsvariablen sind hier eine gute Lösung und können in den meisten Programmiersprachen einfach verwendet werden.
Umgebungsvariablen?
![l4JA1COQqiZB6.gif](/content/dam/twilio-com/global/en/blog/legacy/2017/how-to-set-environment-variables-html/eUhKcrlT5uO9dmeQk4EuAZQKrehhEikH5QwTnv-S9JTgzbGhPF8FyK6YLnEAd7gd2mdR1lPTSR.png)
Wie der Name vermuten lässt, sind Umgebungsvariablen die Variablen in Ihrem System, die Ihre Umgebung beschreiben. Die bekannteste Umgebungsvariable ist wahrscheinlich PATH
. Sie enthält die Pfade zu allen Ordnern, die ausführbare Dateien enthalten könnten. Mit PATH
müssen Sie statt des kompletten Pfads nur den Namen der ausführbaren Datei in Ihrem Terminal eingeben. Daraufhin prüft die Shell das lokale Verzeichnis und die Verzeichnisse, die in der PATH
-Variablen für die ausführbare Datei angegeben sind.
Neben den integrierten Variablen können Sie auch eigene Umgebungsvariablen definieren. Da sie an Ihre Umgebung gebunden sind, eignen sie sich bestens für beispielsweise API-Zugriffstokens. Sie können eine Variable auf Ihrem Entwicklungscomputer auf einen Wert und in Ihrer Produktionsumgebung auf einen anderen Wert setzen – ganz ohne if
-Anweisungen oder spezielle Konfigurationsdateien.
Die Hilfebibliotheken von Twilio suchen beispielsweise nach den Umgebungsvariablen TWILIO_ACCOUNT_SID
und TWILIO_AUTH_TOKEN
, wenn Sie einen Client ohne die beiden Werte instanziieren. Auf diese Weise verhindern Sie, dass sensible Anmeldeinformationen freigegeben werden, zum Beispiel auf GitHub.
Umgebungsvariablen auf macOS und Linux-Distributionen einrichten
Finden Sie zunächst heraus, welche Shell Sie ausführen, bevor Sie Umgebungsvariablen auf macOS oder einem beliebigen UNIX-basierten Betriebssystem festlegen. Führen Sie dazu in Ihrem Terminal folgenden Befehl aus:
Am Ende der Ausgabe sehen Sie, welche Shell ausgeführt wird. Typischerweise wird die bash
-Shell ausgeführt, die wir auch im Beispiel verwenden. Die Schritte ähneln sich jedoch für andere Shells wie zsh
oder fish
.
Um eine Umgebungsvariable festzulegen, brauchen Sie einen Exportbefehl im folgenden Format:
Da sich das nur auf die aktuelle Sitzung auswirkt, müssen Sie diesen Befehl zu einer Datei hinzufügen, die für alle Sitzungen ausgeführt wird. Öffnen Sie dazu die Datei .bashrc in Ihrem Stammverzeichnis mit Ihrem bevorzugten Code-Editor. Fügen Sie an einer beliebigen Stelle der Datei die folgende Zeile hinzu:
Ersetzen Sie <YOUR_ACCOUNT_SID>
durch Ihre Konto-SID aus der Twilio-Konsole. Speichern Sie die Datei und öffnen Sie eine neue Terminalinstanz, um mit folgendem Befehl zu testen:
Sie müssten nun den von Ihnen gespeicherten Wert sehen.
![terminal-env-variable.png](/content/dam/twilio-com/global/en/blog/legacy/2017/how-to-set-environment-variables-html/nfoA2UgpiGT7TA4SA-kJBFLuHJ5ROe7UTW80UQDgrd7LCiLqBYvfGbqGnqlj1KntzxIa38ivfn.png)
Windows-Umgebungsvariablen
Auf einem Windows-Computer haben Sie mehrere Möglichkeiten, Umgebungsvariablen einzurichten. Zu den gängigsten Methoden gehören PowerShell, CMD oder die grafische Benutzeroberfläche (GUI).
Es gibt drei unterschiedliche Speicherorte für Umgebungsvariablen:
- Im aktuellen Prozess. Der aktuelle Prozess ist in der Regel eine Shell wie PowerShell, CMD, Bash etc. Der aktuelle Prozess kann aber auch eine andere Anwendung sein, zum Beispiel Ihre eigene. Jeder untergeordnete Prozess, der aus dem aktuellen Prozess gestartet wird, übernimmt die Umgebungsvariablen dieses Prozesses. Die Umgebungsvariablen werden entfernt, sobald der Prozess endet. Das bedeutet, dass Sie die Umgebungsvariablen jedes Mal neu konfigurieren müssen, wenn Sie eine neue Shell öffnen.
Und genau so werden Umgebungsvariablen unter macOS und in Linux-Distributionen gespeichert. - In der Benutzer-Registry. Die Umgebungsvariable steht allen Prozessen zur Verfügung, die vom Benutzenden gestartet werden. Niemand sonst kann auf diese Umgebungsvariablen zugreifen (ohne entsprechend erhöhte Berechtigungen).
- In der Computer-Registry. Die Umgebungsvariablen stehen allen Benutzenden und Prozessen zur Verfügung, aber um die Umgebungsvariablen für den Computer einrichten zu können, sind erhöhte Berechtigungen erforderlich.
Wo sollten Sie Umgebungsvariablen speichern?
Wenn Sie Ihre Anwendung aus einer Shell ausführen und nicht möchten, das die Umgebungsvariablen verfügbar bleiben, können Sie die Umgebungsvariablen für den aktuellen Prozess einrichten. Wenn die Verfügbarkeit der Umgebungsvariablen ausdrücklich gewollt ist, sollten Sie sie in der Benutzer-Registry speichern. Wenn Sie die Umgebungsvariablen nicht nur für sich selbst oder eine andere Person, sondern für alle Benutzenden konfigurieren möchten, speichern Sie sie in der Computer-Registry.
Umgebungsvariablen mit PowerShell einrichten
Über PowerShell Core wird PowerShell auch auf macOS und Linux-Distributionen unterstützt. Unter Windows ist die Windows PowerShell vorinstalliert und wird als bevorzugte Shell für die Windows-Plattform empfohlen. Die folgenden cmdlets zum Konfigurieren von Umgebungsvariablen funktionieren unter Windows, macOS und Linux.
Die folgende Methode zum Einrichten von Umgebungsvariablen in PowerShell mit der Variablen $Env
ist die gängigste und einfachste:
Fügen Sie nach $Env
einen Doppelpunkt ein, dann den Namen der Umgebungsvariablen, gefolgt von einem Gleichheitszeichen und dem Wert, den Sie verwenden möchten. Damit wird die Umgebungsvariable für den aktuellen Prozess eingerichtet und von jedem untergeordneten Prozess, den Sie aus dieser Shell starten, übernommen.
Die beiden folgenden Alternativen sind weniger geläufig, führen aber zu demselben Ergebnis:
Damit die Umgebungsvariablen über mehrere Shell-Instanzen hinweg Bestand haben, können Sie wie folgt die cmdlets in Ihrem Profilskript speichern bzw. unter Windows in der Benutzer- oder Computer-Registry:
Die beiden Befehle oben führen unter macOS und Linux zu einem no-op, weil es dort weder Benutzer- noch Computer-, sondern nur Prozess-Umgebungsvariablen gibt. Weitere Details finden Sie in der Dokumentation zu PowerShell-Umgebungsvariablen von Microsoft.
Umgebungsvariablen mit CMD einrichten
Cmd bwz. cmd.exe und die Eingabeaufforderung werden automatisch mit Windows installiert. In der Regel sollten Sie PowerShell nutzen, aber wenn das nicht möglich ist, finden Sie hier eine Beschreibung, wie Sie Umgebungsvariablen über cmd und Batch-Dateien einrichten können.
Sie können eine Umgebungsvariable wie folgt mit dem Befehl set
einrichten:
Mit diesem Befehl wird die Umgebungsvariable für den aktuellen Prozess eingerichtet und von allen untergeordneten Prozessen übernommen. Sobald Sie allerdings cmd schließen, gehen die Umgebungsvariablen verloren.
Damit die Umgebungsvariablen über den Prozess hinaus bestehen bleiben, können Sie sie mithilfe des Befehls setx
in der Benutzer- und/oder Computer-Registry speichern.
Diese Befehle bieten weitere Möglichkeiten, die detailliert im Beitrag Befehl einrichten und in der Dokumentation zum setx-Befehl beschrieben sind.
Umgebungsvariablen mithilfe der grafischen Benutzeroberfläche einrichten
Die Einrichtung von Umgebungsvariablen mithilfe der GUI ist in Windows hinter einer Reihe von Dialogebenen versteckt. Zum Öffnen der entsprechenden Oberfläche müssen Sie zunächst den Windows-Befehl „Ausführen“ öffnen. Drücken Sie dazu gleichzeitig die Tasten Windows
und R
auf Ihrer Tastatur. Geben Sie sysdm.cpl
in das Eingabefeld ein und drücken Sie Enter
oder Ok.
![run-dialog.png](/content/dam/twilio-com/global/en/blog/legacy/2017/how-to-set-environment-variables-html/OObV7x5BG9ocXwjO70IbNnsIu6t1J4OdvauLPJPnL1orAisPi2zliv4LwGFpJuH-qez_xKonzg.png)
Klicken Sie im darauf angezeigten Fenster auf die Registerkarte Advanced (Erweitert) und danach auf die Schaltfläche Environment Variables (Umgebungsvariablen) unten rechts im Fenster.
![windows-advanced-dialog.png](/content/dam/twilio-com/global/en/blog/legacy/2017/how-to-set-environment-variables-html/6s5RUPP0Oy_rlW_eBFBej7RaFjE9Ya2Hmf2qJsdPlilfEqAYKpozi4mRtwQU2Vab9BhzHs2blI.png)
![windows-env-dialog.png](/content/dam/twilio-com/global/en/blog/legacy/2017/how-to-set-environment-variables-html/AqsRGon0Ywv2SAxmA-qERzFVwZKXuefu08WPDw0Tw7ffusxLSxL91RoPJWgHNsX-qgB1n6-3Xq.png)
Das Fenster ist in zwei verschiedene Bereiche unterteilt. In einem Bereich befinden sich die nutzerspezifischen Umgebungsvariablen. Diese gelten nur für einen spezifischen Nutzer, nicht jedoch für andere. Der andere Bereich enthält die systemweiten Variablen, die allen Nutzern zur Verfügung stehen.
Klicken Sie auf die Schaltfläche New (Neu) unter dem nutzerspezifischen Bereich, um eine nutzerspezifische Variable zu erstellen. In der Befehlszeile können Sie nun den Namen Ihrer Variable sowie den Wert angeben. Erstellen Sie eine neue Variable mit dem Namen TWILIO_ACCOUNT_SID
und kopieren Sie Ihre Twilio-Konten-SID aus der Konsole. Drücken Sie in der Befehlszeile auf Ok, um die Variable zu erstellen. Drücken Sie anschließend im Fenster „Umgebungsvariablen“ auf Ok. Nun ist alles eingerichtet.
![new-dialog.png](/content/dam/twilio-com/global/en/blog/legacy/2017/how-to-set-environment-variables-html/gs7vw65K27tHdDlA5cVCJSC9MxkZj6eUOfRNwcASDXeFBX8kaptGTBHv5gEO_00B2J8bXjZSix.png)
Als Funktionstest können Sie die Eingabeaufforderung öffnen, indem Sie Windows
+ R
drücken und cmd.exe
eingeben. Falls die Eingabeaufforderung bereits geöffnet ist, führen Sie einen Neustart durch, damit die Änderungen übernommen werden. Führen Sie in der Eingabeaufforderung folgenden Befehl aus:
Daraufhin sehen Sie den von Ihnen in der Umgebungsvariable gespeicherten Wert.
![windows-cmd-dialog.png](/content/dam/twilio-com/global/en/blog/legacy/2017/how-to-set-environment-variables-html/8M5bnf2gCUL5xSetk8WuB5wMfpSxf8ywvxsCidJ6QwDrrI-m42FsHBMwhFlsgO9aYwP13I3fP9.png)
env-Dateien verwenden
Manchmal müssen Sie nur eine Umgebungsvariable für ein einziges Projekt festlegen. In diesem Fall sind .env-Dateien eine gute Lösung. Dabei handelt es sich um Dateien in Ihrem Projekt, in der Sie die Umgebungsvariablen festlegen. Anschließend nutzen Sie eine Bibliothek für Ihre entsprechende Programmiersprache, um die Datei zu laden, die dynamisch die Variablen definiert.
Für die meisten Programmiersprachen gibt es Bibliotheken zum Laden dieser Dateien. Hier einige Beispiele:
- Ruby
- Node.js
- Python
- C#, F#, VB.NET (dotnet-env oder dotenv.net)
- Java (Tutorial)
- PHP
Erstellen Sie eine .env-Datei in Ihrem Projektordner (normalerweise im Stammverzeichnis) und fügen Sie die Schlüssel-Wert-Paare ein. Das sieht folgendermaßen aus:
Nun müssen Sie nur noch die entsprechende Bibliothek einbinden und können dann die Umgebungsvariable verwenden. In Node.js sieht der entsprechende Code zum Beispiel so aus:
Cloud-Anbieter
Das Festlegen von Umgebungsvariablen auf Ihrem lokalen Entwicklungscomputer oder einer VM ist aber nur ein Teil der Arbeit. Was passiert, wenn Sie Ihre Anwendung in einer Cloud-Umgebung wie Heroku, Azure oder AWS hosten oder in einen Docker-Container packen? Kein Problem, denn zum Glück unterstützen alle diese Anbieter Möglichkeiten zum Definieren von Umgebungsvariablen.
Wenn Sie Ihren Cloud-Host in dieser Liste nicht finden können, bedeutet das nicht, dass es keine Möglichkeit gibt, Umgebungsvariablen zu konfigurieren. Überprüfen Sie die Dokumentation, um weitere Informationen zu erhalten.
Zusammenfassung
Das war es schon! Jetzt können Sie Umgebungsvariablen festlegen und somit alle umgebungsbasierten Konfigurationswerte aus Ihrem Code lösen, damit er flexibler und sicherer wird.
Achten Sie jedoch darauf, dass diese Werte weiterhin in Nur-Text gespeichert werden. Möchten Sie sehr sensible Werte speichern, sollten Sie eine Speicherlösung für Geheimnisse wie Vault in Betracht ziehen.
Wenn Sie Fragen haben oder mir Ihre aktuelle Entwicklung zeigen möchten, freue ich mich über Ihre E-Mail an: dkundel@twilio.com. Alternativ können Sie mich auf X (ehemals Twitter) @dkundel erreichen. Ich bin gespannt, von Ihren Entwicklungen zu hören.
Verwandte Posts
Ähnliche Ressourcen
Twilio Docs
Von APIs über SDKs bis hin zu Beispiel-Apps
API-Referenzdokumentation, SDKs, Hilfsbibliotheken, Schnellstarts und Tutorials für Ihre Sprache und Plattform.
Ressourcen-Center
Die neuesten E-Books, Branchenberichte und Webinare
Lernen Sie von Customer-Engagement-Experten, um Ihre eigene Kommunikation zu verbessern.
Ahoy
Twilios Entwickler-Community-Hub
Best Practices, Codebeispiele und Inspiration zum Aufbau von Kommunikations- und digitalen Interaktionserlebnissen.