Em uma instalação completa ou desktop do Solaris 11, há três awk
implementações disponíveis, além de algumas 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
Todos são "compatíveis com os padrões", embora estejam em conformidade com diferentes padrões.
/usr/bin/awk
está em conformidade com a awk
implementação legada do UNIX lançada em 1977. É mantido primeiro no PATH do sistema padrão para não interromper os scripts existentes, pois os awk
releases subsequentes quebram a compatibilidade. oawk
é sinônimo deawk
/usr/bin/nawk
é a versão "nova" do awk
, enviada pela primeira vez no SVR3.1 em 1986. O Awk
padrão POSIX foi baseado nessa implementação. /usr/xpg4/bin/awk
é quase idêntico ao anterior, mas aquele que é formalmente verificado nos testes de validação de conformidade POSIX.
/usr/gnu/bin/awk
, também /usr/bin/gawk
é a variante GNU de awk
. Ele visa cumprir a maioria ou todos os padrões POSIX quando a variável de ambiente POSIXLY_CORRECT
é configurada no ambiente ou quando chamada com a -W posix
opção, mas, de outra forma, adiciona inúmeras extensões próprias específicas. igawk
e pgawk
são elas próprias extensões gawk
, o primeiro suporta arquivos incluídos e o segundo suporta a criação de perfil.
Veja também o capítulo de história do GNUawk
para muitas informações úteis.
Apenas os core-os
pacotes têm garantia de presença em uma instalação regular do Solaris 11, portanto, apenas oawk/awk
e nawk
estão lá. Em particular, quando você cria uma nova região não global , ela contém por padrão o solaris-small-server
pacote do grupo para que xpg4
nem os gnu
awk
binários nem os estejam disponíveis. Isso ocorre por design. O solaris-small-server
grupo é um ponto de partida mínimo ao qual você adiciona os pacotes necessários para que seus aplicativos funcionem corretamente. Isso é mais seguro e eficiente do que a maneira anterior (Solaris 10) em que tudo instalado na região global também foi instalado na região não global, portanto, você precisava remover pacotes não utilizados quando desejava minimizar a região.
Para obter awk
suporte POSIX de maneira portátil em uma instalação "pequena", é necessário instalar o xcu4
pacote e definir PATH para o compatível com POSIX:
pkg install xcu4
PATH=$(getconf PATH):$PATH
Se, por algum motivo, você não quiser instalar esse pacote, uma solução alternativa é usar um "personalizado" PATH
contendo nawk
como awk
, por exemplo:
mkdir -p /opt/posix/bin
cp /usr/bin/nawk /opt/posix/bin/awk
PATH=/opt/posix/bin:$PATH
Como alternativa, você pode instalar GNU awk
e configurar o seu PATH
para obtê-lo primeiro:
pkg install gawk
PATH=/usr/gnu/bin:$PATH
Observe que isso não é específico do Solaris 11. Um agrupamento de pacotes semelhante já existia no Solaris 10 e versões anteriores e os utilitários compatíveis com POSIX foram instalados apenas nos metaclusters "Usuário final", "Desenvolvedor" e "Instalação completa". A instalação de um sistema ou zona com o metacluster "Core" ou "Networking support" levaria ao mesmo xpg4
problema ausente.
Observe também que a falta de /usr/xpg4/bin/awk
um sistema Solaris 11 não é uma falha de conformidade com POSIX. Somente instalações completas do Solaris são usadas na grande maioria dos testes realizados pela Oracle e ISVs, incluindo o programa de certificação Open Group . Instalações reduzidas são suportadas, mas não qualificadas .
Se você distribuir scripts de shell (ou aplicativos que incorporam scripts de shell / comandos de shell de chamada) para o Solaris 11, basta definir /system/xopen/xcu4
como uma dependência em seu pacote IPS e o instalador fará automaticamente o necessário para que o script funcione corretamente:
depend fmri=pkg:/system/xopen/xcu4 type=require
Consulte https://docs.oracle.com/cd/E53394_01/html/E54820/dependtypes.html
/usr/xpg4/bin/awk
não está no Solaris 11?nawk
é "novoawk
", uma AT&T aprimoradaawk
.