environ(7) Miscellaneous Information Manual environ(7) BEZEICHNUNG environ - Umgebung des Benutzers UBERSICHT extern char **environ; BESCHREIBUNG Die Variable environ zeigt auf die >>Umgebung<<, ein Feld von Zeigern auf Zeichenketten. Der letzte Zeiger in diesem Feld hat den Wert NULL. Die Umgebung wird dem Prozess von dem exec(2)-Aufruf verfugbar gemacht, wenn ein neues Programm gestartet wird. Wenn ein Kindprozess mit fork(2) erstellt wird, erbt es eine Kopie der Umgebung seines Elternprozesses. Die Zeichenketten in environ haben die Form >>Name=Wert<<. Gross- oder Kleinschreibung wird fur den Namen berucksichtigt; ausserdem darf der Name nicht das Zeichen >>=<< enthalten. Der Wert kann alles sein, was als Zeichenkette dargestellt werden kann. Weder der Name noch der Wert durfen ein eingebettetes Null-Byte enthalten (>>\0<<), da dieses als Ende der Zeichenkette interpretiert wird. Umgebungsvariablen konnen in die Umgebung der Shell mit dem Befehl export von sh(1) oder dem Befehl setenv von csh(1) gelegt werden. Die anfangliche Umgebung der Shell wird auf verschiedenen Arten aufgebaut, wie Definitionen aus /etc/environment, die (auf Systemen, die pam(8) einsetzen) durch pam_env(8) fur alle Benutzer zum Anmeldezeitpunkt verarbeitet wird. Zusatzlich konnen verschiedene Shell-Initialisierungsskripte, wie das systemweite Skript /etc/profile oder benutzerbezogene Initialisierungsskripte Befehle enthalten, die Variablen zu der Umgebung der Shell hinzufugen. Lesen Sie dafur die Handbuchseite Ihrer bevorzugten Shell fur weitere Details. Bourne-artige Shells unterstutzen die Syntax NAME=Wert Befehl um eine Umgebungsvariablendefinition zu erstellen, deren Geltungsbereich nur den Prozess, der Befehl ausfuhrt, umfasst. Mehrere Variablendefinitionen, getrennt durch Leerraumzeichen, konnen Befehl vorangestellt werden. Argumente konnen auch beim Aufruf von exec(3) an die Umgebung weitergegeben werden. C-Programme konnen ihre Umgebung mit den Funktionen getenv(3), putenv(3), setenv(3) und unsetenv(3) beeinflussen. Es folgt eine Liste der typischerweise in einem System enthaltenen Umgebungsvariablen. Diese Liste ist unvollstandig und enthalt nur haufige Variablen, die von durchschnittlichen Benutzern in taglichen Routinen gesehen werden. Die spezifischen Umgebungsvariablen eines Programms oder einer Bibliotheksfunktion finden Sie im Abschnitt UMGEBUNG oder UMGEBUNGSVARIABLEN der jeweiligen Handbuchseite. USER Der Name des angemeldeten Benutzers (wird von einigen Programmen aus der BSD-Welt ausgewertet). Wird zum Anmeldezeitpunkt gesetzt, siehe den nachfolgenden Abschnitt ANMERKUNGEN. LOGNAME Der Name des angemeldeten Benutzers (wird von einigen Programmen aus der System-V-Welt ausgewertet). Wird zum Anmeldezeitpunkt gesetzt, siehe den nachfolgenden Abschnitt ANMERKUNGEN. HOME Das Anmeldeverzeichnis eines Benutzers. Siehe den nachfolgenden Abschnitt ANMERKUNGEN. LANG Der Name einer Locale (eines Gebietsschemas), die fur Locale-Kategorien angewendet werden soll. Die Locale kann durch LC_ALL oder spezielle Umgebungsvariablen wie LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC und LC_TIME uberschrieben werden (siehe locale(7) fur weitere Details uber die Umgebungsvariablen LC_*). PATH Die Abfolge der Verzeichnisprafixe, die von sh(1) und vielen anderen Programmen bei der Suche nach ausfuhrbaren Dateien verwendet wird, wird als einfacher Dateiname angegeben (das heisst, als Pfadname ohne Schragstriche). Die Prafixe werden durch Doppelpunkte getrennt (:). Die Liste der Prafixe wird vom Anfang bis zum Ende durchsucht, indem der Pfadname aus einem vorangestellten Prafix, einem Schragstrich und dem Dateinamen gebildet wird, bis eine ausfuhrbare Datei gefunden wird. Ausserdem kann als klassische Funktion ein Prafix der Lange Null verwendet werden (als zwei aufeinander folgende Doppelpunkte oder einen vorangestellten oder angehangten Doppelpunkt. Dies wird als das aktuelle Arbeitsverzeichnis interpretiert. Allerdings gilt diese Form der Angabe als veraltet. POSIX merkt an, dass eine konforme Anwendung einen expliziten Pfadnamen verwenden sollte (zum Beispiel .), um das aktuelle Arbeitsverzeichnis anzugeben. Analog zu PATH benutzen einige Shells CDPATH, um das Ziel eines cd-Befehls zu finden, man(1) sucht in MANPATH nach Handbuchseiten, usw. PWD Absoluter Pfad zum aktuellen Arbeitsverzeichnis; muss teilweise kanonisch sein (keine .- oder ..-Komponenten). SHELL Der absolute Pfadname der Anmeldeshell des Benutzers. Wird zum Anmeldezeitpunkt gesetzt, siehe den nachfolgenden Abschnitt ANMERKUNGEN. TERM Der Terminaltyp, fur den Ausgaben aufbereitet werden. PAGER Das vom Benutzer bevorzugte Dienstprogramm zum Anzeigen von Textdateien. Jede als >>command_string<<-Operand zum Befehl sh -c akzeptierbare Zeichenkette sollte gultig sein. Falls PAGER Null oder nicht festgelegt ist, dann fallen Anwendungen, die ein Textanzeigeprogramm starten, auf ein Programm wie less(1) oder more(1) zuruck. EDITOR/VISUAL Das vom Benutzer bevorzugte Dienstprogramm zum Bearbeiten von Textdateien. Jede als >>command_string<<-Operand zum Befehl sh -c akzeptierbare Zeichenkette sollte gultig sein. Bitte beachten Sie, dass das Verhalten vieler Programme und Bibliotheksroutinen vom Vorhandensein oder dem Inhalt bestimmter Umgebungsvariablen beeinflusst wird. Zu den Beispielen gehoren: o Die Variablen LANG, LANGUAGE, NLSPATH, LOCPATH, LC_ALL, LC_MESSAGES und so weiter beeinflussen die Handhabung der Locale, vgl. catopen(3), gettext(3) und locale(7). o TMPDIR beeinflusst die Pfadangabe fur tempnam(3) beim Anlegen von Dateien und das temporare Verzeichnis von sort(1) usw. o LD_LIBRARY_PATH, LD_PRELOAD und andere LD_*-Variablen beeinflussen das Verhalten des dynamischen Laders/Linkers. Siehe auch ld.so(8). o POSIXLY_CORRECT veranlasst bestimmte Programme und Bibliotheksroutinen, sich an die POSIX-Vorgaben zu halten. o Das Verhalten von malloc(3) wird von MALLOC_*-Variablen gesteuert. o Die Variable HOSTALIASES enthalt den Namen der Datei, in der die Alias-Namen fur gethostbyname(3) stehen. o TZ und TZDIR stellen Informationen uber Zeitzonen fur tzset(3) bereit und dadurch auch fur Funktionen wie ctime(3), localtime(3), mktime(3) und strftime(3). Siehe auch tzselect(8). o TERMCAP informiert daruber, wie bestimmte Terminals angesteuert werden mussen (oder enthalt den Namen einer Datei, die diese Informationen bereitstellt). o COLUMNS und LINES informieren Programme uber die Grosse des Fensters und setzen damit vielleicht die tatsachliche Grosse ausser Kraft. o PRINTER oder LPDEST konnen den gewunschten Drucker angeben, siehe lpr(1). ANMERKUNGEN Aus historischen Grunden muss environ standardmassig im Programm des Benutzers deklariert sein. Dennoch kann environ als (nicht standardmassiges) Zugestandnis an Programmierer in der Header-Datei deklariert sein, falls das Feature-Test-Makro _GNU_SOURCE definiert ist (siehe feature_test_macros(7)). Die Aktionen prctl(2) PR_SET_MM_ENV_START und PR_SET_MM_ENV_END konnen zur Steuerung des Orts der Umgebung des Prozesses verwandt werden. Die Variablen HOME, LOGNAME, SHELL und USER werden gesetzt, wenn der Benutzer uber die Sitzungsverwaltungs-Schnittstelle gewechselt wird, was typischerweise durch ein Programm wie login(1) aus der Benutzerdatenbank (wie passwd(5)) geschieht. (Der Wechsel zum Systembenutzer >>root<< mittels su(1) kann zu einer gemischten Umgebung fuhren, in der LOGNAME und USER vom vorherigen Benutzer ubernommen werden, siehe su(1).) FEHLER Es ist offensichtlich, dass es hier ein Sicherheitsproblem gibt. Schon mancher Systembefehl hat den Pfad der Tugend verlassen, weil ein Benutzer ungebrauchliche Werte fur IFS oder LD_LIBRARY_PATH angegeben hat. Es besteht auch die Gefahr der >>Verschmutzung des Namensraums<<. Programme wie make und autoconf erlauben Uberschreiben der Namen von Standard-Dienstprogrammen aus der Umgebung mit ahnlich benannten Variablen in Grossbuchstaben. So verwendet man CC, um den gewunschten C-Compiler zu wahlen (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 und LESS. Diese Verwendung wird als falsch verstanden und sollte fur neue Programme vermieden werden. SIEHE AUCH bash(1), csh(1), env(1), login(1), printenv(1), sh(1), su(1), tcsh(1), execve(2), clearenv(3), exec(3), getenv(3), putenv(3), setenv(3), unsetenv(3), locale(7), ld.so(8), pam_env(8) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer , Dr. Tobias Quathamer , Helge Kreutzmann und Mario Blattermann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 environ(7)