Bei einer vollständigen Solaris 11-Installation oder einer Desktop-Solaris 11-Installation stehen drei awk
Implementierungen sowie einige Varianten zur Verfügung:
/ usr / bin / awk pkg: /system/core-os@0.5.11-0.175.3.1.0.2.0
/ usr / bin / nawk pkg: /system/core-os@0.5.11-0.175.3.1.0.2.0
/ usr / bin / oawk pkg: /system/core-os@0.5.11-0.175.3.1.0.2.0
/ usr / gnu / bin / awk pkg: /text/gawk@3.1.8-0.175.3.0.30.0
/ usr / bin / gawk pkg: /text/gawk@3.1.8-0.175.3.0.0.30.0
/ usr / bin / igawk pkg: /text/gawk@3.1.8-0.175.3.0.0.30.0
/ usr / bin / pgawk pkg: /text/gawk@3.1.8-0.175.3.0.0.30.0
/ usr / xpg4 / bin / awk pkg: /system/xopen/xcu4@0.5.11-0.175.3.0.0.30.0
Sie sind alle "standardkonform", obwohl sie unterschiedlichen Standards entsprechen.
/usr/bin/awk
entspricht der awk
1977 veröffentlichten UNIX- Legacyimplementierung. Es wird zuerst im Standardsystem PATH beibehalten, um vorhandene Skripts nicht zu beschädigen, da nachfolgende awk
Releases die Kompatibilität beeinträchtigen . oawk
ist auch ein von derawk
/usr/bin/nawk
ist die "neue" Version von awk
, die 1986 zum ersten Mal in SVR3.1 ausgeliefert wurde. Der Awk
POSIX-Standard basierte auf dieser Implementierung. /usr/xpg4/bin/awk
ist fast identisch mit der ersteren, wird jedoch formal anhand der POSIX-Konformitätsvalidierungstests überprüft.
/usr/gnu/bin/awk
ist auch /usr/bin/gawk
die GNU - Variante von awk
. Es zielt darauf ab, den meisten oder allen POSIX-Standards zu entsprechen, wenn die Umgebungsvariable POSIXLY_CORRECT
in der Umgebung festgelegt oder mit der -W posix
Option aufgerufen wird , fügt aber ansonsten zahlreiche spezifische eigene Erweiterungen hinzu. igawk
und pgawk
sind selbst Erweiterungen gawk
, die erste unterstützt Include-Dateien und die zweite unterstützt die Profilerstellung.
Im Kapitel zur GNU- awk
Geschichte finden Sie viele nützliche Informationen.
Bei core-os
einer regulären Solaris 11-Installation sind garantiert nur die Pakete vorhanden, also nur oawk/awk
und nawk
dort. Insbesondere wenn Sie eine neue nicht globale Zone erstellen , enthält diese standardmäßig das solaris-small-server
Gruppenpaket, also weder dasxpg4
die gnu
awk
Binärdateien noch diese verfügbar sind. Dies ist beabsichtigt. Die solaris-small-server
Gruppe ist ein minimaler Startpunkt, zu dem Sie die erforderlichen Pakete hinzufügen, damit Ihre Anwendungen ordnungsgemäß funktionieren. Dies ist sicherer und effizienter als die vorherige (Solaris 10) Methode, bei der alles, was in der globalen Zone installiert wurde, auch in der nicht globalen Zone installiert wurde. Sie mussten also nicht verwendete Pakete entfernen, um die Zone zu minimieren.
Damit POSIX awk
in einer solchen "kleinen Server" -Installation portabel unterstützt wird, müssen Sie das installierenxcu4
Paket und PATH auf den POSIX-konformen Pfad setzen:
pkg install xcu4
PATH=$(getconf PATH):$PATH
Sollten Sie aus irgendeinem Grund nicht wollen , das Paket zu installieren, eine Abhilfe ist es, eine „custom“ zu verwenden , PATH
enthält nawk
wie awk
zB:
mkdir -p /opt/posix/bin
cp /usr/bin/nawk /opt/posix/bin/awk
PATH=/opt/posix/bin:$PATH
Alternativ können Sie GNU awk
Ihre installieren und einstellen PATH
, um sie zuerst abzurufen:
pkg install gawk
PATH=/usr/gnu/bin:$PATH
Beachten Sie, dass dies nicht spezifisch für Solaris 11 ist. A ähnliche Paketgruppierung war bereits in Solaris 10 und früheren Versionen vorhanden, und die POSIX-kompatiblen Dienstprogramme wurden nur in den Metaclustern "Endbenutzer", "Entwickler" und "Vollständige Installation" installiert. Wenn ein System oder eine Zone mit dem Metacluster "Core" oder "Networking Support" installiert wäre, hätte dies zu genau demselben xpg4
fehlenden Problem geführt.
Beachten Sie auch, dass das Fehlen von /usr/xpg4/bin/awk
in einem Solaris 11-System kein POSIX-Kompatibilitätsfehler ist. Bei den meisten von Oracle und ISVs durchgeführten Tests, einschließlich des Open Group-Zertifizierungsprogramms, werden nur vollständige Solaris-Installationen verwendet . Reduzierte Installationen werden unterstützt aber nicht qualifiziert .
Wenn Sie Shell-Skripte (oder Anwendungen, die Shell-Skripte einbetten / Shell-Befehle aufrufen) für Solaris 11 verteilen, müssen Sie nur /system/xopen/xcu4
eine Abhängigkeit in ihrem IPS- Paket definieren, und das Installationsprogramm führt automatisch die erforderlichen Schritte aus, damit das Skript ordnungsgemäß funktioniert:
depend fmri=pkg:/system/xopen/xcu4 type=require
Siehe https://docs.oracle.com/cd/E53394_01/html/E54820/dependtypes.html
/usr/xpg4/bin/awk
ist nicht in Solaris 11?nawk
"Neu istawk
", verbessert ein Unternehmen von AT & Tawk
.