Sur une installation Solaris 11 complète ou de bureau, trois awk implémentations sont disponibles, plus quelques variantes:
/ 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.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
Ils sont tous "conformes aux normes", bien que conformes à des normes différentes.
/usr/bin/awkest conforme à l' awkimplémentation UNIX héritée publiée en 1977. Il est conservé en premier dans le système par défaut PATH pour ne pas casser les scripts existants car les awkversions suivantes rompent la compatibilité. oawkest synonyme deawk
/usr/bin/nawkest la "nouvelle" version de awk, livrée pour la première fois en SVR3.1 en 1986. La Awknorme POSIX était basée sur cette implémentation. /usr/xpg4/bin/awkest presque identique au premier, mais celui qui est formellement vérifié par rapport aux tests de validation de conformité POSIX.
/usr/gnu/bin/awk, /usr/bin/gawkest également la variante GNU de awk. Il vise à se conformer à la plupart ou à la totalité de la norme POSIX lorsque la variable d'environnement POSIXLY_CORRECTest définie dans l'environnement ou lorsqu'elle est appelée avec l' -W posixoption, mais ajoute de nombreuses extensions propres spécifiques. igawket pgawksont eux-mêmes des extensions gawk, le premier prend en charge les fichiers et le second prend en charge le profilage.
Voir aussi le chapitre historique GNUawk pour de nombreuses informations utiles.
Seuls les core-ospackages sont garantis pour être présents sur une installation régulière de Solaris 11, donc uniquement oawk/awket nawksont là. En particulier, lorsque vous créez une nouvelle zone non globale , elle contient par défaut le solaris-small-serverpackage de groupe, donc ni le xpg4ni les gnu awkbinaires ne sont disponibles. C'est par conception. Le solaris-small-servergroupe est un point de départ minimal auquel vous ajoutez les packages requis pour que vos applications fonctionnent correctement. C'est plus sûr et plus efficace que la méthode précédente (Solaris 10) où tout installé sur la zone globale était également installé sur la zone non globale, vous avez donc dû supprimer les packages inutilisés lorsque vous vouliez réduire la zone.
Pour obtenir la awkprise en charge POSIX de manière portable dans une telle installation de "petit serveur", vous devez installer le xcu4package et définir votre PATH sur celui conforme POSIX:
pkg install xcu4
PATH=$(getconf PATH):$PATH
Si pour une raison quelconque vous ne souhaitez pas installer ce package, une solution de contournement consiste à utiliser un "personnalisé" PATHcontenant nawkcomme awk, par exemple:
mkdir -p /opt/posix/bin
cp /usr/bin/nawk /opt/posix/bin/awk
PATH=/opt/posix/bin:$PATH
Vous pouvez également installer GNU awket configurer votre PATHpour l'obtenir en premier:
pkg install gawk
PATH=/usr/gnu/bin:$PATH
Notez que cela n'est pas spécifique à Solaris 11. Un regroupement de packages similaire existait déjà sous Solaris 10 et versions antérieures et les utilitaires compatibles POSIX n'étaient installés que dans les métaclusters "Utilisateur final", "Développeur" et "Installation complète". Le fait d'avoir un système ou une zone installé avec le métacluster «Core» ou «Networking support» aurait alors conduit au même xpg4problème manquant.
Notez également que l'absence d' /usr/xpg4/bin/awkun système Solaris 11 n'est pas un échec de conformité POSIX. Seules les installations complètes de Solaris sont utilisées dans la grande majorité des tests effectués par Oracle et les éditeurs de logiciels indépendants, y compris le programme de certification Open Group . Les installations réduites sont prises en charge mais non qualifiées .
Si vous distribuez des scripts shell (ou des applications intégrant des scripts shell / appelant des commandes shell) pour Solaris 11, il vous suffit de définir /system/xopen/xcu4une dépendance dans leur package IPS et le programme d'installation fera automatiquement ce qui est requis pour que le script fonctionne correctement:
depend fmri=pkg:/system/xopen/xcu4 type=require
Voir https://docs.oracle.com/cd/E53394_01/html/E54820/dependtypes.html
/usr/xpg4/bin/awkn'est pas dans Solaris 11?nawkest "nouveauawk", un AT&T amélioréawk.