Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Umgebungsvariablen

&pagelevel(3)&pagelevel

Die Umgebungsvariablen - auch Shell-Variablen genannt -, die in diesem Abschnitt beschrieben werden, beeinflussen das Verhalten von Kommandos, Funktionen und Anwendungen. Es gibt Umgebungsvariablen, die nur für die Kommandos von Interesse sind (siehe Handbuch „POSIX-Kommandos“ [2] unter dem Stichwort „Shell-Variable“). Wenn ein Prozess mit der Ausführung beginnt, stellen die exec-Funktionen einen Vektor von Zeichenketten zur Verfügung, der Umgebung genannt wird (siehe exec). Auf diesen Vektor wird durch die folgende externe Variable gezeigt:

extern char **environ;

Entsprechend dem XPG4 Version 2-Standard haben diese Zeichenketten die Form "name=value", z.B. "PATH=/sbin:/usr/sbin".

Anwendungen können eigene Umgebungsvariablen definieren, wobei die Namenskonventionen eingehalten werden müssen (siehe Handbuch „POSIX-Kommandos“ [2]).

Vorbesetzung der Umgebungsvariablen vom BS2000 aus

Wird ein Programm nicht aus der Shell, sondern aus der SDF-Umgebung mit /START-EXECUTABLE-PROGRAM gestartet, dann sind die Umgebungsvariablen standardmäßig nicht definiert.
In diesem Fall können Sie diese vom BS2000 aus vorbesetzen, indem Sie eine SDF-P-Variable mit dem Namen SYSPOSIX als Struktur definieren (siehe Handbuch „SDF-P“ [9]). Wenn die Variable SYSPOSIX.name den Wert value hat, wird die Zeichenkette "name=value" in den globalen Datenbereich des Programms geschrieben, wobei jedoch nur Variablen vom Typ String berücksichtigt werden.

Auf der BS2000-Kommandoebene können nur Großbuchstaben für Variablennamen verwendet werden. Bindestriche in Namen der SDF-P-Variablen werden in Unterstriche umgewandelt. Aus SYSPOSIX.LC-NAME wird also z.B. die Zeichenkette "LC_NAME =...".

Umgebungsvariablen für die Internationalisierung

Ein internationalisiertes Programm macht keine festen Annahmen über die Umgebung, in der es abläuft. Es ermittelt die konkrete Umgebung, in der es abläuft, aus Umgebungsvariablen.

So wird z.B. die Umgebung für die Darstellung von Ausgaben aus den Umgebungsvariablen LANG und LC_ xxx ermittelt, während die Funktionen zur Bearbeitung von Meldungskatalogen die Umgebungsvariable NLSPATH auswerten.

Folgende Umgebungsvariablen für die Internationalisierung werden unterstützt:

LANG

Bestimmt die Lokalität für sprach- und kulturspezifische Eigenheiten und den kodierten Zeichensatz, wenn LC_ALL oder andere Umgebungsvariablen für die Lokalität nicht definiert sind. LANG kann von Anwendungen z.B. für das Format von Fehlermeldungen, Sortierreihenfolgen oder Datumsdarstellungen genutzt werden. Der Wert der Umgebungsvariablen hat folgendes Format:

LANG= sprache[_ gebiet[.zeichensatz]]

Ein Benutzer aus Österreich, der Deutsch spricht und ein Terminal mit dem ISO 8859/1-Zeichensatz verwendet, stellt die Variable LANG auf den folgenden Wert:

LANG=De_A.88591

Auf diese Weise sollte es einem Benutzer möglich sein, entsprechende Meldungskataloge zu finden, vorausgesetzt, sie existieren.

Besondere Sprach-Operationen werden zur Laufzeit durch den Aufruf von setlocale() initialisiert. Normalerweise werden die Sprach-Anforderungen des Benutzers, wie durch die Umgebungsvariable LANG angegeben, durch den nachfolgenden Aufruf von setlocale() zur internationalen Umgebung des Programms gebunden:

setlocale (LC_ALL, "");

LC_ALL

Auf X/Open-Systemen ist diese Form eines Aufrufs von setlocale() definiert, um die internationale Umgebung des Programms aus den zugehörigen Umgebungsvariablen zu initialisieren. LC_ALL spricht die gesamte internationale Umgebung des Programms an und LANG stellt die notwendigen Voreinstellungen zur Verfügung, wenn eine oder mehrere der kategorie-spezifischen Variablen nicht gesetzt oder gleich der leeren Zeichenkette sind.

LC_COLLATE

Diese Kategorie gibt die verwendete Sortierfolge an. Die diesbezüglichen Informationen werden in einer Datenbank gespeichert, die von dem Kommando colltbl() erzeugt wird. Diese Umgebungsvariable beeinflusst strcoll() und strxfrm().

LC_CTYPE

Diese Kategorie legt die Klassifikation von Zeichen, die Umwandlung von Zeichen und die Größe von Multibyte-Zeichen fest. Die diesbezüglichen Informationen werden in einer Datenbank gespeichert, die von dem Kommando chrtbl() erzeugt wird. Die Standardvereinbarung für C entspricht der 7-Bit-Zeichenmenge. Diese Umgebungsvariable wird von ctype(), mbchar() und vielen Kommandos verwendet, z.B. die Kommandos cat, ed, ls und vi.

LC_MESSAGES

Diese Kategorie gibt die Sprache an, die vom Meldungskatalog verwendet wird. Zum Beispiel kann eine Anwendung je einen Meldungskatalog mit französischen Meldungen und mit deutschen Meldungen haben.

LC_MONETARY

Diese Kategorie spezifiziert die Währungssymbole und Trennzeichen für eine bestimmte Umgebung. Diese Umgebungsvariable wird von localeconv() verwendet.

LC_NUMERIC

Diese Kategorie gibt die Trennzeichen für Dezimalstellen und Tausenderstellen an. Diese Umgebungsvariable wird von localeconv(), printf() und strtod() verwendet.

LC_TIME

Diese Kategorie spezifiziert Datums- und Zeitformate.

NLSPATH

Die Umgebungsvariable NLSPATH liefert sowohl die Position von Meldungskatalogen in der Form eines Suchpfads, als auch die Namenskonventionen, die mit den Meldungskatalogen verknüpft sind. Zum Beispiel:

NLSPATH=/nlslib/%L/%N.cat:/nlslib/%N/%L

Das Metazeichen % zeigt ein Substitutionsfeld an, wobei %L die aktuelle Einstellung der Umgebungsvariablen LANG (siehe unten) ersetzt und %N den Wert des Parameters name ersetzt, der an catopen() übergeben wird. Im obigen Beispiel sucht catopen() daher zuerst in /nlslib/$LANG/name.cat und dann in /nlslib/name/$LANG nach dem angegebenen Meldungskatalog.

NLSPATH wird üblicherweise systemweit eingestellt (z.B. in /etc/profile) und macht daher die Positionierungs- und Namenskonventionen für die Meldungskataloge sowohl für die Programme als auch für die Benutzer transparent.

Der komplette Satz der Metazeichen umfasst folgende Symbole:

Metazeichen

Bedeutung

%N

Wert des Namensparameters, der an catopen() übergeben wird

%L

Wert von LANG

%l

Wert des Sprachenelements aus LANG

%t

Wert des Landelements aus LANG

%c

Wert des Zeichensatzelements aus LANG

%%

das Zeichen %

Das Verhalten der Sprachinformations-Funktion nl_langinfo() wird ebenfalls durch die Belegungen dieser Umgebungsvariablen beeinflusst (siehe auch langinfo.h).

LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC und LC_TIME sind so definiert, dass sie ein zusätzliches Feld @modifikator akzeptieren, welches es dem Benutzer erlaubt, einen besonderen Fall eines Umgebungsdatums innerhalb einer speziellen Kategorie auszuwählen (zum Beispiel, um das Wörterbuch entgegengesetzt zur Sortierreihenfolge der Zeichen zu definieren). Die Syntax dieser Umgebungsvariablen lautet daher:

[sprache[_gebiet[.zeichensatz]][@modifikator]]

Wenn zum Beispiel ein Benutzer mit dem System in französisch kommunizieren will, aber deutsche Textdateien sortieren muss, so könnten LANG und LC_COLLATE möglicherweise folgendermaßen definiert sein:

LANG=Fr_FR

LC_COLLATE=De_DE

Dies könnte noch erweitert werden, um zum Beispiel die Wörterbuch-Sortierung durch die Verwendung des Felds @modifikator auszuwählen:

LC_COLLATE=De_DE@dict

Zur Laufzeit werden diese Werte zur internationalen Umgebung des Programms gebunden, indem setlocale() aufgerufen wird.