En una instalación de Solaris 11 completa o de escritorio, hay tres awk
implementaciones disponibles, más algunas 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 paquete: /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
Todos son "compatibles con los estándares", aunque cumplen con diferentes estándares.
/usr/bin/awk
está cumpliendo con la awk
implementación heredada de UNIX lanzada en 1977. Se mantiene primero en la RUTA predeterminada del sistema para no romper los scripts existentes ya que las awk
versiones posteriores rompen la compatibilidad. oawk
es sinónimo deawk
/usr/bin/nawk
es la "nueva" versión de awk
, enviada por primera vez en SVR3.1 en 1986. El Awk
estándar POSIX se basó en esta implementación. /usr/xpg4/bin/awk
es casi idéntico al anterior, pero el que se verifica formalmente con las pruebas de validación de conformidad POSIX.
/usr/gnu/bin/awk
, también /usr/bin/gawk
es la variante GNU de awk
. Su objetivo es cumplir con la mayoría o la totalidad del estándar POSIX cuando la variable de entorno POSIXLY_CORRECT
se establece en el entorno o cuando se llama con la -W posix
opción, pero de lo contrario agrega numerosas extensiones propias específicas. igawk
y pgawk
son extensiones en sí mismas gawk
, la primera admite incluir archivos y la segunda admite la creación de perfiles.
Consulte también el capítulo de historia de GNUawk
para obtener mucha información útil.
Sólo los core-os
paquetes están garantizados para estar presentes en una instalación normal de Solaris 11, por lo tanto sólo oawk/awk
y nawk
están ahí. En particular, cuando crea una nueva zona no global , contiene de manera predeterminada el solaris-small-server
paquete de grupo, de modo que xpg4
ni el gnu
awk
binario ni el otro están disponibles. Esto es por diseño. El solaris-small-server
grupo es un punto de inicio mínimo al que agrega los paquetes necesarios para que sus aplicaciones funcionen correctamente. Esto es más seguro y eficiente que la forma anterior (Solaris 10) donde todo lo instalado en la zona global también se instaló en la no global, por lo que tuvo que eliminar los paquetes no utilizados cuando quería minimizar la zona.
Para conseguir que POSIX awk
admita una instalación portátil en una instalación de "servidor pequeño" de este tipo, debe instalar el xcu4
paquete y configurar su RUTA en el que cumple con POSIX:
pkg install xcu4
PATH=$(getconf PATH):$PATH
Si por alguna razón no desea instalar ese paquete, una solución alternativa es usar un "personalizado" que PATH
contenga nawk
como awk
, por ejemplo:
mkdir -p /opt/posix/bin
cp /usr/bin/nawk /opt/posix/bin/awk
PATH=/opt/posix/bin:$PATH
Alternativamente, puede instalarlo GNU awk
y configurarlo PATH
para obtenerlo primero:
pkg install gawk
PATH=/usr/gnu/bin:$PATH
Tenga en cuenta que esto no es específico de Solaris 11. Ya existía una agrupación de paquetes similar en Solaris 10 y anteriores, y las utilidades compatibles con POSIX solo se instalaron en los metaclusters "Usuario final", "Desarrollador" y "Instalación completa". Tener un sistema o una zona instalados con el metacluster "Core" o "Networking support" habría llevado al mismo xpg4
problema que falta.
Tenga en cuenta también que la falta de /usr/xpg4/bin/awk
un sistema Solaris 11 no es una falla de cumplimiento POSIX. Solo se utilizan instalaciones completas de Solaris en la gran mayoría de las pruebas realizadas por Oracle e ISV, incluido el programa de certificación Open Group . Las instalaciones reducidas son compatibles pero no están calificadas .
Si distribuye scripts de shell (o aplicaciones que incorporan scripts de shell / invocando comandos de shell) para Solaris 11, solo necesita definirlo /system/xopen/xcu4
como una dependencia en su paquete IPS y el instalador hará automáticamente lo que se requiere para que el script funcione correctamente:
depend fmri=pkg:/system/xopen/xcu4 type=require
Ver https://docs.oracle.com/cd/E53394_01/html/E54820/dependtypes.html
/usr/xpg4/bin/awk
no está en Solaris 11?nawk
es "nuevoawk
", un AT&T mejoradoawk
.