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/awk
est conforme à l' awk
implé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 awk
versions suivantes rompent la compatibilité. oawk
est synonyme deawk
/usr/bin/nawk
est la "nouvelle" version de awk
, livrée pour la première fois en SVR3.1 en 1986. La Awk
norme POSIX était basée sur cette implémentation. /usr/xpg4/bin/awk
est 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/gawk
est é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_CORRECT
est définie dans l'environnement ou lorsqu'elle est appelée avec l' -W posix
option, mais ajoute de nombreuses extensions propres spécifiques. igawk
et pgawk
sont 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-os
packages sont garantis pour être présents sur une installation régulière de Solaris 11, donc uniquement oawk/awk
et nawk
sont là. En particulier, lorsque vous créez une nouvelle zone non globale , elle contient par défaut le solaris-small-server
package de groupe, donc ni le xpg4
ni les gnu
awk
binaires ne sont disponibles. C'est par conception. Le solaris-small-server
groupe 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 awk
prise en charge POSIX de manière portable dans une telle installation de "petit serveur", vous devez installer le xcu4
package 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é" PATH
contenant nawk
comme 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 awk
et configurer votre PATH
pour 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 xpg4
problème manquant.
Notez également que l'absence d' /usr/xpg4/bin/awk
un 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/xcu4
une 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/awk
n'est pas dans Solaris 11?nawk
est "nouveauawk
", un AT&T amélioréawk
.