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/awkentspricht der awk1977 veröffentlichten UNIX- Legacyimplementierung. Es wird zuerst im Standardsystem PATH beibehalten, um vorhandene Skripts nicht zu beschädigen, da nachfolgende awkReleases die Kompatibilität beeinträchtigen . oawkist auch ein von derawk
/usr/bin/nawk ist die "neue" Version von awk , die 1986 zum ersten Mal in SVR3.1 ausgeliefert wurde. Der AwkPOSIX-Standard basierte auf dieser Implementierung. /usr/xpg4/bin/awkist fast identisch mit der ersteren, wird jedoch formal anhand der POSIX-Konformitätsvalidierungstests überprüft.
/usr/gnu/bin/awkist auch /usr/bin/gawkdie GNU - Variante von awk. Es zielt darauf ab, den meisten oder allen POSIX-Standards zu entsprechen, wenn die Umgebungsvariable POSIXLY_CORRECTin der Umgebung festgelegt oder mit der -W posixOption aufgerufen wird , fügt aber ansonsten zahlreiche spezifische eigene Erweiterungen hinzu. igawkund pgawksind selbst Erweiterungen gawk, die erste unterstützt Include-Dateien und die zweite unterstützt die Profilerstellung.
Im Kapitel zur GNU- awkGeschichte finden Sie viele nützliche Informationen.
Bei core-oseiner regulären Solaris 11-Installation sind garantiert nur die Pakete vorhanden, also nur oawk/awkund nawkdort. Insbesondere wenn Sie eine neue nicht globale Zone erstellen , enthält diese standardmäßig das solaris-small-serverGruppenpaket, also weder dasxpg4 die gnu awkBinärdateien noch diese verfügbar sind. Dies ist beabsichtigt. Die solaris-small-serverGruppe 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 awkin 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 , PATHenthält nawkwie awkzB:
mkdir -p /opt/posix/bin
cp /usr/bin/nawk /opt/posix/bin/awk
PATH=/opt/posix/bin:$PATH
Alternativ können Sie GNU awkIhre 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 xpg4fehlenden Problem geführt.
Beachten Sie auch, dass das Fehlen von /usr/xpg4/bin/awkin 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/xcu4eine 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/awkist nicht in Solaris 11?nawk"Neu istawk", verbessert ein Unternehmen von AT & Tawk.