Em uma instalação completa ou em área de trabalho do Solaris 11, há três awk
implementações disponíveis, além de algumas variantes:
/usr/bin/awk pkg:/system/[email protected] /usr/bin/nawk pkg:/system/[email protected] /usr/bin/oawk pkg:/system/[email protected] /usr/gnu/bin/awk pkg:/text/[email protected] /usr/bin/gawk pkg:/text/[email protected] /usr/bin/igawk pkg:/text/[email protected] /usr/bin/pgawk pkg:/text/[email protected] /usr/xpg4/bin/awk pkg:/system/xopen/[email protected]
Eles são todos "compatíveis com os padrões", embora cumpram padrões diferentes.
-
/usr/bin/awk
está em conformidade com a implementação herdada do UNIXawk
lançada em 1977. Ela é mantida em primeiro no PATH padrão do sistema para não quebrar os scripts existentes comoawk
versões posteriores quebras de compatibilidade.oawk
é um sinônimo doawk
-
/usr/bin/nawk
é a "nova" versão deawk
, enviada pela primeira vez em SVR3.1 em 1986.Awk
POSIX baseou-se nessa implementação./usr/xpg4/bin/awk
é quase idêntico ao primeiro, mas o que é formalmente verificado em relação aos testes de validação de conformidade POSIX. -
/usr/gnu/bin/awk
, também/usr/bin/gawk
é a variante GNU deawk
. Destina-se a cumprir com a maioria ou todo o padrão POSIX quando a variável de ambientePOSIXLY_CORRECT
é definida no ambiente ou quando chamada com a opção-W posix
, mas também adiciona numerosas extensões próprias específicas.igawk
epgawk
são extensões paragawk
, a primeira suporta arquivos include e a segunda suporta perfis.
Veja também o capítulo do histórico do GNU awk
para muitos informações úteis.
Apenas é garantido que os pacotes core-os
estejam presentes em uma instalação regular do Solaris 11, portanto, apenas oawk/awk
e nawk
estão lá. Em particular, quando você cria uma nova zona não global , ela contém por padrão o < href="https://docs.oracle.com/cd/E53394_01/html/E54814/gmkgl.html#scrolltoc"> solaris-small-server
group package para que nem o xpg4
nem o gnu
% Os bináriosawk
estão disponíveis. Isso é por design. O solaris-small-server
group é um ponto inicial mínimo ao qual você inclui os pacotes necessários para que seus aplicativos funcionem corretamente. Isso é mais seguro e eficiente do que o modo anterior (Solaris 10) em que tudo que é instalado na região global também era instalado no não global, então você precisava remover os pacotes não utilizados quando quisesse minimizar a zona.
Para obter POSIX awk
suporta uma maneira portátil em tal instalação de "pequeno servidor", você precisa instalar o pacote xcu4
e definir seu PATH como 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 "custom" PATH
contendo nawk
as 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 o GNU awk
e definir seu PATH
para obtê-lo primeiro:
pkg install gawk
PATH=/usr/gnu/bin:$PATH
Observe que isso não é específico para o Solaris 11. A agrupamento de pacotes semelhante já existia no Solaris 10 e versões anteriores e os utilitários compatíveis com POSIX eram instalados apenas nos metaclusters" Usuário final "," Desenvolvedor "e" Instalação completa ". Ter um sistema ou uma zona instalada com o metacluster "Núcleo" ou "Suporte de rede" levaria, então, ao mesmo problema xpg4
ausente.
Note também que a falta de /usr/xpg4/bin/awk
em um sistema Solaris 11 não é uma falha de conformidade POSIX. Apenas instalações completas do Solaris são usadas na grande maioria dos testes realizados pela Oracle e ISVs, incluindo a certificação do Grupo Aberto programa. Instalações reduzidas são suportadas mas não qualificadas .
Se você distribuir scripts de shell (ou aplicativos incorporando scripts de shell / comandos shell de chamada) para o Solaris 11, você só precisa definir /system/xopen/xcu4
como uma dependência em seus IPS e o instalador fará automaticamente o que é necessário para o script funcionar corretamente:
depend fmri=pkg:/system/xopen/xcu4 type=require
Veja o link