- Umgebungsvariable
-
Der Begriff Umgebungsvariable ist ein Begriff aus dem Bereich der Betriebssysteme von Computern. Eine Umgebungsvariable enthält beliebige Zeichenketten, die in den meisten Fällen Pfade zu bestimmten Programmen oder Daten enthalten, sowie bestimmte Daten, die von mehreren Programmen verwendet werden können.
Ein anderer Begriff für Umgebungsvariable ist auch globale Variable; allerdings ist dieser Begriff eher unüblich, da er in vielen Programmiersprachen in anderer Bedeutung verwendet wird.
Benutzer oder Anwendungen können Werte dieser Variablen lesen und/oder verändern.
Inhaltsverzeichnis
Unix und Unix-ähnliche Betriebssysteme
Kommandozeile
In vielen auf UNIX basierenden Betriebssystemen, etwa Linux oder BSD,[1] werden Umgebungsvariablen beim Start eines Kommandozeileninterpreters (Shell) gesetzt. Vordefinierte Umgebungsvariablen werden in der Regel beim Start einer Shell gemäß den Einträgen in einer oder mehreren Konfigurationsdateien automatisch gesetzt. In der Bourne-Shell ist dies beispielsweise die Datei /etc/profile. Zusätzlich benutzt die Shell eine im Heimatverzeichnis des Benutzers vorhandene Datei (z. B. .profile oder .cshrc), die benutzerspezifische Umgebungsvariablen enthält und vom Benutzer selbst angepasst werden kann. Diese vordefinierten Umgebungsvariablen kann man sich durch die Eingabe von env in der Shell auch ausgeben lassen.
Vordefinierte Umgebungsvariablen
Einige Umgebungsvariablen finden sich auf fast allen Unix-Systemen wieder. Beispiele hierfür sind:
HOME Der Pfad des persönlichen Verzeichnisses des aktuellen Benutzers LOGNAME Der Name des aktuellen Benutzers MAIL Der Pfad, in dem die persönlichen E-Mail-Nachrichten des aktuellen Benutzers abgelegt werden PATH Diese Variable enthält den Suchpfad. Sollte bei der Eingabe eines Befehls kein Verzeichnis angegeben werden, durchsucht die Shell die in dieser Variable gespeicherten Pfade von links nach rechts. Die Verzeichnisnamen werden durch Semikolon „;“ getrennt. Das aktuelle Verzeichnis wird nicht durchsucht, da dies ein Sicherheitsrisiko darstellt. Änderung der Umgebungsvariablen
Umgebungsvariablen können folgendermaßen gesetzt und den anderen Prozessen innerhalb des Betriebssystems bekannt gemacht werden:
Bei Bourne, bash und darauf aufbauenden Shells:
Setzen der Variable: <Variablenname>=<Variableninhalt> Bekanntmachen der Variable: export <Variablenname> Löschen der Variable: unset <Variablenname> Bei csh, tcsh und darauf aufbauenden Shells:
Setzen und Bekanntmachen der Variable: setenv <Variablenname> <Variableninhalt> Anzeige der Umgebungsvariablen
Bei allen Shells:
Abfrage der Variable: echo $<Variablenname> Prozessabhängigkeit
Es ist üblich, dass die Umgebungsvariablen pro System-Prozess gespeichert werden. Änderungen, die ein Prozess an den Variablen vornimmt, sind nur für ihn selbst und für Prozesse, die von ihm gestartet wurden (Child-Prozesse), gültig.
MS-DOS
Unter MS-DOS und damit kompatiblen DOS-Varianten (mit oder ohne einem darauf laufenden 16-Bit-Windows, also Windows 1.x–3.x) und älteren Versionen von 32-Bit-Windows (also Windows 95/98/Me) werden die Umgebungsvariablen in der Datei AUTOEXEC.BAT, die beim Systemstart ausgeführt wird, oder anderen Batch-Dateien gesetzt.
Windows
Kommandozeile
Um sich in der Kommandozeile den Wert einer Umgebungsvariable anzeigen zu lassen, verwendet man echo %NAME% oder set NAME, wobei für NAME der Variablenname eingesetzt wird. Der set-Befehl steht ferner als Kommandozeilen-Editor zur Verfügung. Er lässt sich auch sehr gut innerhalb von Batch-Dateien verwenden. Der Befehl set als solcher listet alle gesetzten und somit verfügbaren Umgebungsvariablen auf. Möchte man eine Umgebungsvariable erstellen oder einer bestehenden einen neuen Wert zuweisen, nutzt man set NAME=WERT, wobei statt NAME der Name und statt WERT der künftige Wert der Variablen eingesetzt wird. set /? gibt ausführliche Informationen zu den Funktionalitäten des Befehls.
Grafische Oberfläche
Einen grafischen Editor zum direkten Bearbeiten der Umgebungsvariablen bietet der Befehl sysdm.cpl oder der Menüpunkt „Systemsteuerung – System“ oder die Tastenkombination Windows+Pause. Der Editor ist unter dem Register „Erweitert“ und dort unter „Umgebungsvariablen“ zu finden.
Dynamische Umgebungsvariablen
Einige Windows-Versionen stellen von sich aus dynamisch generierte Umgebungsvariablen zur Verfügung. Diese werden nicht fest gespeichert, und der Wert wird kurz vor der Ausgabe ermittelt. Beispiele solcher dynamischer Umgebungsvariablen sind:
CD Gibt das Verzeichnis aus, in dem sich der Abfragende gerade befindet DATE Das aktuelle System-Datum TIME Die aktuelle System-Zeit ERRORLEVEL Den Fehlercode des zuletzt ausgeführten Befehls RANDOM Generiert eine Zufallszahl zwischen 0 und 32767 CMDCMDLINE Enthält die Befehlszeile des aktiven Kommandointerpreters, siehe auch COMSPEC Vordefinierte Umgebungsvariablen
Abhängig von der verwendeten Windows-Version stehen weitere, beim Systemstart oder beim Einloggen definierte Umgebungsvariablen bereit. Zum Beispiel:
Variable Windows XP Windows Vista/7 %ALLUSERSPROFILE% (%PROGRAMDATA%) C:\Dokumente und Einstellungen\All Users C:\ProgramData %APPDATA% C:\Dokumente und Einstellungen\{username}\Anwendungsdaten C:\Users\{username}\AppData\Roaming %COMPUTERNAME% {computername} {computername} %COMMONPROGRAMFILES% C:\Programme\Gemeinsame Dateien C:\Programme\Common Files %COMMONPROGRAMFILES(x86)% ? ? %COMSPEC% C:\Windows\System32\cmd.exe C:\Windows\System32\cmd.exe %HOMEDRIVE% C:\ C:\ %HOMEPATH% \Dokumente und Einstellungen\{username} \Users\{username} %LOCALAPPDATA% n/a C:\Users\{username}\AppData\Local %LOGONSERVER% \\{domain_logon_server} \\{domain_logon_server} %OS% Windows_NT Windows_NTw %PATH% C:\Windows\system32, C:\Windows, C:\Windows\System32\Wbem C:\Windows\system32, C:\Windows, C:\Windows\System32\Wbem %PATHEXT% .COM, .EXE, .BAT, .CMD, .VBS, .VBE, .JS, .WSF, .WSH .com, .exe, .bat, .cmd, .vbs, .vbe, .js, .jse, .wsf, .wsh, .msc %PROGRAMFILES% C:\Programme C:\Program Files %PROGRAMFILES(X86)% ? ? %PROMPT% $P$G $P$G %SystemDrive% C:\ C:\ %SystemRoot% C:\Windows; (Windows 2000 und davor: C:\WINNT ) C:\Windows %TEMP% oder %TMP% C:\Windows\TEMP C:\Windows\TEMP %USERDOMAIN% {userdomain} {userdomain} %USERNAME% {username} {username} %USERPROFILE% %SystemDrive%\Dokumente und Einstellungen\{username} C:\Users\{username} %WINDIR% C:\Windows C:\Windows %PUBLIC% n/a C:\Users\Public %PSModulePath% n/a %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\ PATH Auflistung aller Pfade bzw. Verzeichnisse, die durchsucht werden sollen, wenn ein Befehl nicht im aktuellen Verzeichnis gefunden werden konnte HOMEDRIVE Der Pfad des Startlaufwerks HOMEPATH Der Pfad des persönlichen Verzeichnisses des aktuellen Benutzers TEMP oder TMP Der Pfad des Verzeichnisses, in das Windows-Anwendungen temporäre Dateien zwischenspeichern USERNAME Der Name des aktuellen Benutzers SYSTEMROOT oder WINDIR Der Pfad des Windows System-Verzeichnisses PROGRAMFILES Der Pfad des Programmordners Registrierung
Unter den neueren auf NT basierenden Versionen von Windows (Windows NT/2000/XP/2003/Vista) werden Umgebungsvariablen in der Registrierung gespeichert. Der Registrierungspfad
HKEY_CURRENT_USER\Environment
bzw. bei Windows XP (für z. B. HOMEDRIVE) und Windows Vista
HKEY_CURRENT_USER\Volatile Environment
wird für Umgebungsvariablen verwendet, welche nur den aktuellen Benutzer betreffen. Der Pfad
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
hingegen dient zur Speicherung von Umgebungsvariablen, die im Gesamtsystem gültig sind. Mit dem Befehl regedit lassen sich diese Pfade leicht durchsuchen.
Verzögerung bei der Anwendung geänderter Variablen
Beim Start eines Prozesses (EXE-Datei) werden die aktuellen Umgebungsvariablen aus der Registry gelesen und dann „eingefroren“, der Prozess erhält also zu seiner Entstehung eine Kopie oder einen "Snapshot" der aktuellen Variablen. Später geänderte Umgebungsvariablen wirken sich daher nicht auf die laufenden Prozesse aus, sodass Prozesse wie eine laufende Shell („Eingabeaufforderung“) nichts davon mitbekommt. Sollen die Umgebungsvariablen in einer Shell verwendet werden, muss eine neue Instanz der Shell geladen werden. Es spielt dabei keine Rolle, ob eine bereits geöffnete Shell mit den alten Umgebungsvariablen vorher geschlossen wurde oder nicht. Es können dadurch zwei Shells mit unterschiedlichen Umgebungsvariablen ausgeführt werden.
Wird die Shell aus einem Windows-Explorer heraus gestartet (z. B. mittels „Open Command Window here“), und ist die Option „Ordnerfenster in einem eigenen Prozess starten“ in der Einstellung des Windows-Explorers aktiviert, so muss auch der Windows-Explorer neu gestartet werden, damit die geänderten Einstellungen sichtbar werden.
Einzelnachweise
Kategorien:- Programmierung
- Betriebssystemtheorie
Wikimedia Foundation.