Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

env - Umgebung bei Ausführung von Kommandos ändern

&pagelevel(4)&pagelevel

(set environment for command execution)


Mit env können Sie sich die aktuellen Umgebungsvariablen und ihre Werte ausgeben lassen oder sie für ein Kommando verändern. env liest die aktuelle Umgebung ein, ändert sie entsprechend der Angabe name=wert und führt das Kommando dann in der veränderten Umgebung aus. Die schon vorhandenen Angaben für name und wert werden durch die neuen Angaben überschrieben und vor Ausführung des Kommandos der usprünglichen Umgebung hinzugefügt. Die neuen Angaben bilden zusammen mit den unveränderten Umgebungsvariablen die für die Ausführung von kommando gültige Umgebung.

Wenn kein Kommando angegeben ist, wird die durch env veränderte Umgebung ausgegeben.


Syntax


env[ -i| -][ name=wert]...[ kommando[ arg...]]

–i | -

Die ursprüngliche Umgebung wird ignoriert; kommando wird dann exakt in der angegebenen Umgebung ausgeführt.

Die Option -i entspricht der alten Option -, die weiterhin unterstützt wird.

name=wert

name ist der Name einer Variablen, die für kommando Gültigkeit haben soll.

wert ist der Wert von name, der für kommando Gültigkeit haben soll.

kommando

Name des Kommandos oder der Shell-Prozedur, die Sie unter der definierten Umgebung ausführen lassen möchten.

arg

Argument, z.B. Stellungs- oder Kennwortparameter, das Sie an kommando übergeben können.

Endestatus

0env wurde erfolgreich ausgeführt
1-125Fehler
126Das angegebene kommando existiert, kann aber nicht aufgerufen werden.
127Das angegebene kommando ist nicht auffindbar.

Variable

PATH

Bestimmt die Lage von kommando. Wird PATH als name=value Operand env zugewiesen, wird value für die Suche nach kommando verwendet.

Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos env:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Internationalisierungsvariablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien) sowie die Einteilung der Zeichen in Groß- und Kleinbuchstaben und deren Übereinstimmung.

LC_MESSAGES

Legt die internationale Umgebung für Format und Inhalt der Diagnosemeldungen fest, die in die Standardfehlerausgabe geschrieben werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Beispiel 1

Ausgabe der aktuellen Werte der Umgebungsvariablen:


$ env
_=/usr/bin/env

TTY=/dev/term/004

IO_CONVERSION=NO

PATH=/usr/bin:/opt/bin::/etc:/usr/sbin

TERM=BLOCK

HZ=100

LOGNAME=TESTUSER

PROGRAM_ENVIRONMENT=SHELL

HOME=/TESTUSER

TZ=MEZ-1MSZ-2,M3.5.0/02:00:00,M9.5.0/03:00:00

MAIL=/var/mail/TESTUSER

SHELL=/sbin/sh

USER=TESTUSER

LANG=

Beispiel 2

Ausgabe der geänderten Werte der Umgebungsvariablen:


$ env PATH=$HOME/proz

_=/usr/bin/env

TTY=/dev/term/004

IO_CONVERSION=NO

PATH=/TESTUSER/proz

TERM=BLOCK

HZ=100

LOGNAME=TESTUSER

PROGRAM_ENVIRONMENT=SHELL

HOME=/TESTUSER

TZ=MEZ-1MSZ-2,M3.5.0/02:00:00,M9.5.0/03:00:00

MAIL=/var/mail/TESTUSER

SHELL=/sbin/sh

USER=TESTUSER

LANG=


Die Umgebungsvariable PATH wurde geändert.

Beispiel 3

Ausgabe der geänderten Umgebungsvariablen mit der Option -:


$ env - PATH=$HOME/proz

PATH=/TESTUSER/proz


Die ursprüngliche Umgebung wird ignoriert.

Beispiel 4

Aufruf der Datei fly, die sich in /TESTUSER/sprueche, also in einem Unterdateiverzeichnis des HOME-Dateiverzeichnisses befindet.

Inhalt der Datei fly:

echo "Wenn hinter $1 $1 $2, $2 $1 $1 nach !"

fly wird nun von einer beliebigen Stelle in Ihrem Dateibaum aus aufgerufen, hier mit den Argumenten Fliegen und fliegen


$ env PATH=$HOME/sprueche fly Fliegen fliegen

Wenn hinter Fliegen Fliegen fliegen, fliegen Fliegen Fliegen nach!


Mit der neuen Variablendefinition für PATH legen Sie fest, wo das eingegebene Kommando, in diesem Fall die Datei fly, gesucht werden soll: in einem Unterdateiverzeichnis des HOME-Dateiverzeichnisses, das Sie zusammen mit dem Wert der Variablen HOME ($HOME) angeben.

Als Argumente übergeben Sie an die Stellungsparameter $1 und $2 die Zeichenketten Fliegen und fliegen

Der Inhalt der Datei fly wird nur deshalb korrekt ausgeführt, weil das Kommando echo ein eingebautes sh-Kommando ist. Alle POSIX-Kommandos, die in /usr/bin, /usr/sbin oder /opt/bin stehen, können durch die Veränderung der Variablen PATH nicht mehr gefunden werden. Damit die POSIX-Kommandos weiterhin ausgeführt werden, muss die Variable PATH wie im folgenden Beispiel geändert werden.

Beispiel 5

Aufruf der Datei loesch, die sich im Dateiverzeichnis /TESTUSER/proz befindet. In dieser Datei steht eine Prozedur, die zwei Dateien vergleicht und die eine löscht, wenn die Dateien gleich sind.

Inhalt der Datei loesch:

if cmp -s $1 $2
then
rm $2
fi


Aufruf von loesch von einer beliebigen Stelle in Ihrem Dateibaum aus mit den Argumenten dat1 und dat2


$ env PATH=$PATH:$HOME/proz loesch dat1 dat2


Hier wurde an den ursprünglichen Suchpfad der neue angefügt, damit sowohl die Prozedur loesch als auch die in der Prozedur enthaltenen POSIX-Kommandos ausgeführt werden können. Wenn nur der Suchpfad für loesch angegeben wird, wird folgender Fehler gemeldet:


/TESTUSER/proz/loesch: cmp: not found

Siehe auch

sh, set, exec, profile, environ