extern char **environ;
Die Variable environ zeigt auf die »Umgebung«, ein Feld von Zeigern auf Zeichenketten. Der letzte Zeiger in diesem Feld hat den Wert NULL. (Diese Variable muss im Anwenderprogramm deklariert werden, ist aber für Glibc, Libc4 und Libc5 in der Header-Datei <unistd.h> definiert (für Glibc muss außerdem _GNU_SOURCE definiert sein)). Die Umgebung wird dem Prozess von dem exec(3)-Aufruf, der den Prozess gestartet hat, verfügbar gemacht.
Konventionsgemäß haben Zeichenketten in environ die Form »Name=Wert«. Häufige Beispiele sind:
Der Umgebung können weitere Namen hinzugefügt werden. Dazu benutzt man für die sh(1) den Befehl export und »Name=Inhalt«, für die csh(1) gibt es den setenv-Befehl. Argumente können auch beim Aufruf von exec(3) an die Umgebung weitergegeben werden. C-Programme können ihre Umgebung mit den Funktionen getenv(3), putenv(3), setenv(3) und unsetenv(3) beeinflussen.
Bitte beachten Sie, dass das Verhalten vieler Programme und Bibliotheksroutinen vom Vorhandensein oder dem Inhalt bestimmter Umgebungsvariablen beeinflusst wird. Eine willkürliche Auswahl:
Die Variablen LANG, LANGUAGE, NLSPATH, LOCPATH, LC_ALL, LC_MESSAGES usw. beeinflussen die Handhabung der Locale, vgl. locale(5).
TMPDIR beeinflusst die Pfadangabe für tmpnam(3) beim Anlegen von Dateien, das temporäre Verzeichnis von sort(1) usw.
LD_LIBRARY_PATH, LD_PRELOAD und andere LD_* Variablen beeinflussen das Verhalten des dynamischen Laders/Linkers.
POSIXLY_CORRECT veranlasst bestimmte Programme und Bibliotheksroutinen, sich an die POSIX-Vorgaben zu halten.
Das Verhalten von malloc(3) wird von MALLOC_*-Variablen gesteuert.
Die Variable HOSTALIASES enthält den Namen der Datei, in der die Alias-Namen für gethostbyname(3) stehen.
TZ und TZDIR stellen Informationen über Zeitzonen für tzset(3) bereit und dadurch auch für Funktionen wie ctime(3), localtime(3), mktime(3) und strftime(3). Siehe auch tzselect(8).
TERMCAP informiert darüber, wie bestimmte Terminals angesteuert werden müssen (oder enthält den Namen einer Datei, die diese Informationen bereitstellt).
COLUMNS und LINES informieren Programme über die Größe des Fensters und setzen damit vielleicht die tatsächliche Größe außer Kraft.
PRINTER oder LPDEST können den gewünschten Drucker angeben, siehe lpr(1).
Usw.
Es ist offensichtlich, dass es hier ein Sicherheitsproblem gibt. Schon mancher Systembefehl hat den Pfad der Tugend verlassen, weil ein Benutzer ungebräuchliche Werte für IFS oder LD_LIBRARY_PATH angegeben hat.
Es besteht auch die Gefahr der »Verschmutzung des Namensraums«. Programme wie make und autoconf erlauben Überschreiben der Namen von Standard-Dienstprogrammen aus der Umgebung mit ähnlich benannten Variablen in Großbuchstaben. So verwendet man CC, um den gewünschten C-Compiler zu wählen (und analog MAKE, AR, AS, FC, LD, LEX, RM, YACC, usw.). Aber in einigen traditionellen Nutzungen gibt eine Umgebungsvariable keinen Pfadnamen, sondern Programmoptionen an. So gibt es MORE, LESS und GZIP. Diese Verwendung wird als falsch verstanden angesehen und sollte für neue Programme vermieden werden. Die Autoren von gzip sollten erwägen, ihre Option in GZIP_OPT umzubenennen.
bash(1), csh(1), login(1), sh(1), tcsh(1), execve(2), clearenv(3), exec(3), getenv(3), putenv(3), setenv(3), unsetenv(3), locale(5)
This page is part of release 3.54 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an <debian-l10n-german@lists.debian.org>.