In un'installazione Solaris 11 completa o desktop, sono disponibili tre awk
implementazioni, oltre ad alcune varianti:
/ 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
Sono tutti "conformi agli standard", sebbene conformi a standard diversi.
/usr/bin/awk
è conforme awk
all'implementazione UNIX legacy rilasciata nel 1977. Viene mantenuto per primo nel PATH di sistema predefinito per non interrompere gli script esistenti poiché le awk
versioni successive rompono la compatibilità. oawk
è sinonimo diawk
/usr/bin/nawk
è la "nuova" versione di awk
, distribuita per la prima volta in SVR3.1 nel 1986. Lo Awk
standard POSIX era basato su questa implementazione. /usr/xpg4/bin/awk
è quasi identico al primo, ma quello che viene verificato formalmente rispetto ai test di validazione della conformità POSIX.
/usr/gnu/bin/awk
, /usr/bin/gawk
è anche la variante GNU di awk
. Mira a rispettare la maggior parte o tutto lo standard POSIX quando la variabile di ambiente POSIXLY_CORRECT
è impostata nell'ambiente o quando viene chiamata con l' -W posix
opzione, ma in caso contrario aggiunge numerose proprie estensioni specifiche. igawk
e pgawk
sono essi stessi estensioni a gawk
, il primo supporta i file include e il secondo supporta la profilazione.
Vedi anche il capitolo Cronologia GNUawk
per molte informazioni utili.
Solo i core-os
pacchetti sono garantiti per essere presenti su una normale installazione di Solaris 11, quindi solo oawk/awk
e nawk
ci sono. In particolare, quando si crea una nuova zona non globale , contiene per impostazione predefinita il solaris-small-server
pacchetto di gruppo in modo che xpg4
né i gnu
awk
binari né i siano disponibili. Questo è di progettazione. Il solaris-small-server
gruppo è un punto di partenza minimo a cui aggiungere i pacchetti richiesti per il corretto funzionamento delle applicazioni. Questo è più sicuro ed efficiente rispetto al modo precedente (Solaris 10) in cui tutto ciò che era installato sulla zona globale era installato anche su quella non globale, quindi è stato necessario rimuovere i pacchetti non utilizzati quando si voleva ridurre al minimo la zona.
Per ottenere il awk
supporto POSIX in modo portatile in un'installazione di "piccoli server", è necessario installare il xcu4
pacchetto e impostare il PERCORSO su POSIX conforme:
pkg install xcu4
PATH=$(getconf PATH):$PATH
Se per qualche motivo non si desidera installare quel pacchetto, una soluzione alternativa consiste nell'utilizzare un "personalizzato" PATH
contenente nawk
come awk
, ad esempio:
mkdir -p /opt/posix/bin
cp /usr/bin/nawk /opt/posix/bin/awk
PATH=/opt/posix/bin:$PATH
In alternativa, potresti installarlo GNU awk
e impostarlo PATH
per ottenerlo prima:
pkg install gawk
PATH=/usr/gnu/bin:$PATH
Si noti che questo non è specifico per Solaris 11. Un raggruppamento di pacchetti simile era già esistente in Solaris 10 e precedenti e le utility conformi a POSIX erano installate solo nei metacluster "Utente finale", "Sviluppatore" e "Installazione completa". Avere un sistema o una zona installati con il metacluster "Core" o "Supporto di rete" avrebbe quindi portato allo stesso xpg4
problema mancante.
Si noti inoltre che la mancanza di /usr/xpg4/bin/awk
un sistema Solaris 11 non è un errore di conformità POSIX. Nella maggior parte dei test eseguiti da Oracle e ISV vengono utilizzate solo installazioni Solaris complete, incluso il programma di certificazione Open Group . Le installazioni ridotte sono supportate ma non qualificate .
Se si distribuiscono script di shell (o applicazioni che incorporano script di shell / comandi di chiamata shell) per Solaris 11, è sufficiente definire /system/xopen/xcu4
una dipendenza nel loro pacchetto IPS e il programma di installazione farà automaticamente ciò che è necessario affinché lo script funzioni correttamente:
depend fmri=pkg:/system/xopen/xcu4 type=require
Vedi https://docs.oracle.com/cd/E53394_01/html/E54820/dependtypes.html
/usr/xpg4/bin/awk
non è in Solaris 11?nawk
è "nuovoawk
", un AT&T miglioratoawk
.