Kategorie Bild Tooling
Zurück zur Übersicht

direnv ist ein netter Helfer

Wie direnv dir bei Umgebungsvariablen, Sicherheit und unterschiedlichen PHP-Versionen hilft.

direnv ist für mich ein netter Helfer, der so simpel ist, dass ich früher nie auf die Idee gekommen wäre, so etwas in diese Richtung selbst zu bauen. Ich wusste nicht, dass ich das brauche, bis ich es genutzt habe. Seitdem hat es meinen Alltag mit Projekten spürbar einfacher gemacht.

Es lädt einfach Umgebungsvariablen abhängig von dem Verzeichnis in dem ich mich befinde. (Ja source .env) geht auch, aber so ist es einfacher.

Warum direnv Entwicklern hilft

direnv vereinfacht die Verwaltung von Projekten auf verschiedene Weise, indem es den Umgang mit Umgebungsvariablen automatisiert, isoliert und sicherer macht.

1. Automatisches Laden und Entladen

Sobald man in ein Projektverzeichnis wechselt, lädt direnv automatisch die Umgebungsvariablen aus einer .envrc Datei und entfernt sie sofort wieder, sobald man das Verzeichnis verlässt. Das erspart Entwicklern das manuelle Setzen und Löschen von Variablen bei jedem Projektwechsel.

2. Saubere globale Konfiguration

Projektspezifische Variablen bleiben genau dort, wo sie hingehören, im Projektordner. Dadurch wird verhindert, dass die globale ~/.profile Datei des Systems mit unzähligen Variablen überladen wird.

3. Vermeidung typischer Entwicklerfehler

direnv bringt eine Standardbibliothek mit nützlichen Hilfsfunktionen mit, die wiederkehrende Aufgaben vereinfachen. Anstatt den fehleranfälligen und langen Befehl export PATH=$PWD/bin:$PATH tippen zu müssen, kann man einfach PATH_add bin verwenden. Das schützt vor typischen Syntaxfehlern wie $PATH=bin.

4. Isolierte Entwicklungsumgebungen

direnv ermöglicht die sehr einfache Erstellung von isolierten Umgebungen für jedes einzelne Projekt. Da es sprachenunabhängig ist, kann es für verschiedene Sprachen genutzt werden, um spezifische Tools wie rbenv für Ruby oder pyenv für Python zu nutzen.

5. Unterschiedliche PHP-Versionen und Jira CLI pro Projekt

direnv hilft mir auch auf der Konsole unterschiedliche PHP-Versionen zu nutzen. Gerade bei mehreren Projekten ist das sehr hilfreich, weil ich ohne Docker, der nicht immer direkt klappt, schnell eine andere PHP-Version festlegen kann, wenn mehrere Versionen installiert sind.

Eine typische .envrc-Datei sieht bei mir so aus:

export PATH="/opt/homebrew/opt/php@8.4/bin:/opt/homebrew/opt/php@8.4/sbin:$PATH"
export PHP_BIN="/opt/homebrew/opt/php@8.4/bin/php"
export PHP_INI_SCAN_DIR="$PWD/php.d"
 
export JIRA_CONFIG_FILE=./.jira.yaml

Ich nutze direnv außerdem sehr gerne, um die Jira CLI ordnerbasiert einzustellen. So kann ich unterschiedliche Jira-Systeme ansteuern, je nachdem, in welchem Projektordner ich mich befinde.

6. Eingebaute Sicherheit

Um zu verhindern, dass fremder oder schädlicher Code unbemerkt ausgeführt wird, blockiert direnv das Laden neuer oder geänderter .envrc Dateien zunächst. Man muss diese Dateien, sofern man ihnen vertraut, erst ausdrücklich mit dem Befehl direnv allow . freigeben.

Fazit

direnv nimmt Entwicklern die Routinearbeit ab und sorgt für klarere Projektgrenzen. Ich nutze es inzwischen in jedem neuen Projekt, weil es schnell Sicherheit und Struktur schafft.

Weitere Artikel