Umgebungsvariablen in Windows dienen häufig dem schnellen Auslesen von Eigenschaften (siehe $env:COMPUTERNAME
in Powershell oder %COMPUTERNAME%
in CMD). Im Fall von PATH
können Programmverzeichnisse zum Ausführungspfad hinzugefügt werden. Dadurch kann man im Ausführen-Dialog ( + R ) und in Konsolen beispielsweise direkt regedit, notepad oder explorer eingeben und die Programme werden gefunden und gestartet, obwohl sie sich in unterschiedlichen Verzeichnissen befinden. Will man dieses System für eigene Anwendungsfälle anpassen und nutzen, geht das relativ schnell. In diesem Beitrag werden Beispiele und Anwendungsmöglichkeiten beschrieben.
Anwendungsfälle
Umgebungsvariablen kann man sich zunutze machen, um eigene Aliase zu schreiben und auf benutzerdefinierte Verzeichnisse zu verweisen. So kann man beispielsweise den Pfad zum eigenen Projekte-Ordner über %PROJEKTE%
erreichbar machen oder bestimmte Compilerversionen von Python einzeln aufrufbar machen, ohne jedes mal den vollständigen Pfad angeben zu müssen.
Konkrete Anwendungsbeispiele
Python 2 und Python 3
- es gibt eine Python-Datei HelloWorld.py, die in Python 3 geschrieben wurde
- die python.exe, auf die in PATH verwiesen wird, ist aber Python 2
- nun müsste man erst herausfinden, in welchem Verzeichnis sich die python.exe für Python 3 befindet und sie direkt dort aufrufen
- tritt dieses Problem häufiger auf, geht viel Zeit für die Suche verloren
- entweder ersetzt man in PATH Python 2 durch Python 3, was aber nur das Problem umdreht, oder man erzeugt eigene Umgebungsvariablen für diesen Fall
- diese Variablen kann man beispielsweise PYTHON2 und PYTHON3 nennen
- als Pfad kann man entweder direkt die python.exe hinterlegen oder nur das jeweilige Verzeichnis der python.exe (siehe Bild)
- möchte man nächstes mal eine HelloWorld.py ausführen, kann man das wie folgt tun:
- cmd:
%PYTHON2%\python.exe HelloWorld.py
- ps ohne Autovervolltändigung:
& $env:PYTHON2\python.exe .\HelloWorld.py
- ps mit Autovervollständigung:
$env:PYTHON2\
dann TAB
- cmd:
- in allen Fällen funktioniert die Autovervollständigung und die Variable kann direkt in den Pfad umgewandelt werden, weshalb es bereits ausreicht, nur die Variablennamen
PYTHON2
undPYTHON3
zu kennen
Projekte-Ordner
- es gibt den tief verschachtelten Ordner
X:\Dokumente\Sonstiges\Arbeit\2017\Projekte
- dieser Ordner wird häufiger verwendet und auf dem Desktop ist eine Verknüpfung zum Ordner vorhanden
- in dem Ordner muss auch häufiger mit der Konsole (Powershell oder CMD) gearbeitet werden
- dafür muss man entweder erst den Ordner öffnen und von dort ein Terminal starten
- oder ein Terminal öffnen und von dort zum Ordner navigieren
- mit einer direkt auf den Ordner verweisenden Umgebungsvariable, zum Beispiel
PROJEKTE
, spart man sich die Zwischenschritte:- cmd:
cd %PROJEKTE%
- ps:
cd $env:PROJEKTE
- Im Explorer und Suchleisten direkt verwendbar:
%PROJEKTE%
- cmd:
- im Bild ist ein Beispiel mit der zuvor erwähnten PYTHON-Umgebungsvariable zu sehen
Zugriff auf Umgebungsvariablen
Es gibt mehrere Möglichkeiten, für den Zugriff und die Betrachtung von Umgebungsvariablen:
- cmd.exe:
- Auflisten mittels
env
- Zugriff mittels
%nameDerVariable%
- Auflisten mittels
- Powershell:
- Auflisten mittels
env
- Auflisten mittels
Get-ChildItem Env:
- Zugriff mittels
$env:nameDerVariable
- Auflisten mittels
- Explorer und Suchfenster:
- Direktzugriff möglich durch das Eintippen von
%nameDerVariable%
- Ist in der Variable ein Programmpfad hinterlegt, wird dieses direkt gestartet
- Ist die Variable ein Ordner, wird der Ordner geöffnet
- Direktzugriff möglich durch das Eintippen von
- Systemeinstellungen (Windows 10):
- + Pause dann auf Erweiterte Systemeinstellungen, dann auf Umgebungsvariablen
- Alternativ im Startmenü nach Umgebungsvariablen suchen
- Folgendes ausführen ( + R):
rundll32.exe sysdm.cpl,EditEnvironmentVariables
Eigene Umgebungsvariablen setzen
Umgebungsvariablen lassen sich in cmd mit SET
und in PowerShell beispielsweise mit [System.Environment]::SetEnvironmentVariable("nameDerVariable", "wertDerVariable")
festlegen. Diese sind jedoch nur in der aktuellen Terminal-Sitzung gültig. Öffnet man ein anderes PowerShell- oder CMD-Fenster, kann man dort nicht auf die neue Variable zugreifen. Für Permanenz kann man eine Profil-Datei verwenden, ähnlich wie .bash_profile
bei einigen Linux-Versionen.
Wesentlich einfacher ist es jedoch, die Umgebungsvariablen direkt in den Systemeinstellungen zu bearbeiten. Diese sind auch ohne Kunstgriffe permanent abgespeichert und global verfügbar. Das geht, wie bereits beschrieben, mit einer Suche nach Umgebungsvariablen im Startmenü oder in den Einstellungen. Im Bild wird das Anlegen einer neuen Umgebungsvariable beispielhaft durchgespielt.
Es ist möglich, dass die Variable anfangs nicht verfügbar ist. Da hilft dann ein erneutes Einloggen oder ein Neustart, um sie global verfügbar zu machen.
Links
- Doku zu cd (Set-Location):
- https://msdn.microsoft.com/powershell/reference/4.0/microsoft.powershell.management/Set-Location
- Für die eigene PS-Version aufrufen per:
Get-Help Set-Location -Online
- Liste von Umgebungsvariablen:
- Liste von Tastaturkürzeln für Windows: