У повній або настільній установці Solaris 11 доступні три awk варіанти реалізації, а також деякі варіанти:
/ 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
Всі вони "відповідають стандартам", хоча і відповідають різним стандартам.
/usr/bin/awkвідповідає старій awkреалізації UNIX, випущеній у 1977 р. Він зберігається першим у системі PATH за замовчуванням, щоб не порушувати існуючі сценарії, оскільки наступні awkверсії порушують сумісність. oawkє синонімомawk
/usr/bin/nawk"нова" версія awk, вперше поставлена в SVR3.1 в 1986 році. AwkНа цій реалізації базувався стандарт POSIX. /usr/xpg4/bin/awkмайже ідентичний попередньому, але той, який офіційно перевіряється на тести перевірки відповідності POSIX.
/usr/gnu/bin/awk, також /usr/bin/gawkє варіантом GNU awk. Він спрямований на відповідність більшості або всім стандарту POSIX, коли змінна середовище POSIXLY_CORRECTвстановлена в оточенні або коли викликається за допомогою -W posixпараметра, але в іншому випадку додає численні конкретні власні розширення. igawkі pgawkсамі по собі є розширеннями gawk, перша підтримує файли, а друга підтримує профілювання.
Дивіться також розділ історії GNUawk для багато корисної інформації.
Тільки core-osпакети гарантовано будуть присутні на звичайній установці Solaris 11, таким чином , тільки oawk/awkі nawkє. Зокрема, коли ви створюєте нову не глобальну зону , вона за замовчуванням містить solaris-small-serverгруповий пакет, тому ні xpg4ні, ні gnu awkдвійкові файли недоступні. Це за дизайном. solaris-small-serverГрупа є мінімальною початковою точкою , до якої ви додаєте необхідні пакети для ваших додатків для правильної роботи. Це більш безпечний та ефективний, ніж попередній (Solaris 10) спосіб, коли все, що встановлено в глобальній зоні, було встановлено і на не глобальній, тому вам довелося видаляти невикористані пакети, коли ви хотіли мінімізувати зону.
Щоб отримати awkпідтримку POSIX портативним способом в такій установці на "невеликий сервер", вам потрібно встановити xcu4пакет і встановити вам PATH на відповідний POSIX:
pkg install xcu4
PATH=$(getconf PATH):$PATH
Повинен чи з якихось - то причин ви не хочете встановити цей пакет, обхідний шлях полягає у використанні «звичай» , PATHщо містить , nawkяк awk, наприклад:
mkdir -p /opt/posix/bin
cp /usr/bin/nawk /opt/posix/bin/awk
PATH=/opt/posix/bin:$PATH
Крім того, ви можете встановити GNU awkта встановити свій, PATHщоб отримати його першим:
pkg install gawk
PATH=/usr/gnu/bin:$PATH
Зауважте, що це не характерно для Solaris 11. Подібне групування пакетів вже існувало під Solaris 10 та новішими версіями, а утиліти, сумісні з POSIX, були встановлені лише у метакластерах "Кінцевий користувач", "Розробник" та "Повна установка". Встановлення системи або зони, встановленої метакластером "Core" або "Networking support", призвело б до тієї самої xpg4відсутньої проблеми.
Зауважимо також, що відсутність /usr/xpg4/bin/awkу системі Solaris 11 не є збоєм у відповідності POSIX. У переважній більшості випробувань, проведених Oracle та ISV, включаючи програму сертифікації Open Group , використовуються лише повні установки Solaris . Скорочені установки підтримуються, але не кваліфікуються .
Якщо ви розповсюджуєте скрипти оболонок (або програми, що вбудовують скрипти оболонок / виклику команд оболонки) для Solaris 11, вам просто потрібно визначити /system/xopen/xcu4залежність у своєму пакеті IPS, і інсталятор автоматично зробить те, що потрібно для належного функціонування сценарію:
depend fmri=pkg:/system/xopen/xcu4 type=require
Дивіться https://docs.oracle.com/cd/E53394_01/html/E54820/dependtypes.html
/usr/xpg4/bin/awkнемає в Solaris 11?nawkє "новимawk", покращеним AT&Tawk.