env - ein Programm in einer veränderten Umgebung laufen lassen
env [OPTION]… [-] [NAME=WERT]… [BEFEHL [ARG]…]
Jeden NAMEn in der Umgebung auf WERT setzen und BEFEHL ausführen.
Die obligatorischen Argumente für Optionen sind für deren Kurz- und Langform gleich.
- -i, --ignore-environment
- Mit einer leeren Umgebung beginnen
- -0, --null
- Jede Ausgabezeile mit einem Nullbyte statt des Zeilenumbruchs abschließen
- -u, --unset=NAME
- Variable aus der Umgebung entfernen
- -C, --chdir=VERZ
- Arbeitsverzeichnis auf VERZ ändern
- -S, --split-string=S
- Verarbeitet und trennt S in getrennte Argumente; wird zur Übergabe von mehreren Argumenten auf Shebang-Zeilen verwandt
- --block-signal[=SIG]
- Blockiert die Auslieferung der Signale SIG an BEFEHL
- --default-signal[=SIG]
- Setzt die Handhabung der Signale SIG auf die Vorgabe zurück
- --ignore-signal[=SIG]
- Setzt die Handhabung der Signal(e) SIG, so dass sie nichts machen
- --list-signal-handling
- Berichtet von der Vorgabe abweichende Signal-Handler auf Stderr
- -v, --debug
- Zeigt ausführliche Informationen für jeden Verarbeitungsschritt an
- --help
- zeigt Hilfeinformationen an und beendet das Programm.
- --version
- gibt Versionsinformationen aus und beendet das Programm.
Ein einzelnes »-« impliziert -i. Wenn kein BEFEHL angegeben ist, wird die resultierende Umgebung ausgegeben.
SIG darf ein Signalname wie »PIPE« oder eine Signalnummer wie »13« sein. Ohne »SIG« sind alle bekannten Signale eingeschlossen. Mehrere Signale können durch Kommata getrennt werden. Ein leeres SIG-Argument ist unzulässig.
- 125
- falls der Befehl env selbst fehlschlägt
- 126
- falls der BEFEHL zwar gefunden wurde, aber nicht aufgerufen werden kann
- 127
- falls der BEFEHL nicht gefunden wurde
- -
- ansonsten der Rückgabewert des BEFEHLs
Die Option -S ermöglicht die Festlegung mehrerer Parameter in einem Skript. Wird ein Skript namens 1.pl mit den folgenden ersten Zeilen
#!/usr/bin/env -S perl -w -T
…
ausgeführt, wird perl -w -T 1.pl ausgeführt.
Ohne den Parameter »-S« wird das Skript wahrscheinlich wie folgt fehlschlagen:
/usr/bin/env: 'perl -w -T': No such file or directory
Siehe die vollständige Dokumentation für weitere Details.
Diese Option erlaubt das Einstellen eines Signal-Handlers auf seine Standardaktion, was über den traditionellen Befehl »trap« der Shell nicht möglich ist. Das nachfolgende Beispiel stellt sicher, dass »seq« mit SIGPIPE beendet wird, unabhängig davon, wie die Signale in dem Prozess, der den Befehl aufruft, gehandhabt werden.
sh -c 'env --default-signal=PIPE seq inf | head -n1'
Die POSIX-Handbuchseite exec(3p) schreibt:
"viele existierende Anwendungen nehmen irrtümlicherweise an, dass sie mit bestimmten Signalen starten, die auf ihre Vorgabe gesetzt und/oder nicht blockiert sind… Daher ist es am besten, Signale über Exec hinweg nicht zu blockieren oder zu ignorieren, ohne einen expliziten Grund dafür, und insbesondere Signale nicht über Execs von beliebigen (nicht eng zusammenarbeitenden) Programmen zu blockieren."
Geschrieben von Richard Mlynarik, David MacKenzie und Assaf Gordon.
Copyright © 2023 Free Software Foundation, Inc. Lizenz GPLv3+: GNU GPL Version 3 oder neuer.
Dies ist freie Software: Sie können sie verändern und weitergeben. Es gibt KEINE GARANTIE, soweit gesetzlich zulässig.
Die deutsche Übersetzung dieser Handbuchseite wurde von Karl Eichwalder <ke@suse.de>, Lutz Behnke <lutz.behnke@gmx.de>, Michael Piefel <piefel@debian.org>, Michael Schmidt <michael@guug.de>, Dr. Tobias Quathamer <toddy@debian.org>, Mario Blättermann <mario.blaettermann@gmail.com> und Helge Kreutzmann <debian@helgefjell.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 die Mailingliste der Übersetzer.