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 awkall'implementazione UNIX legacy rilasciata nel 1977. Viene mantenuto per primo nel PATH di sistema predefinito per non interrompere gli script esistenti poiché le awkversioni 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 Awkstandard 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 posixopzione, ma in caso contrario aggiunge numerose proprie estensioni specifiche. igawke pgawksono 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-ospacchetti sono garantiti per essere presenti su una normale installazione di Solaris 11, quindi solo oawk/awke nawkci sono. In particolare, quando si crea una nuova zona non globale , contiene per impostazione predefinita il solaris-small-serverpacchetto di gruppo in modo che xpg4né i gnu awkbinari né i siano disponibili. Questo è di progettazione. Il solaris-small-servergruppo è 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 awksupporto POSIX in modo portatile in un'installazione di "piccoli server", è necessario installare il xcu4pacchetto 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" PATHcontenente nawkcome 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 awke impostarlo PATHper 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 xpg4problema mancante.
Si noti inoltre che la mancanza di /usr/xpg4/bin/awkun 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/xcu4una 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/awknon è in Solaris 11?nawkè "nuovoawk", un AT&T miglioratoawk.