У повній або настільній установці 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
.