В полной или настольной установке 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), когда все, что установлено в глобальной зоне, было установлено и в неглобальной, поэтому вам пришлось удалять неиспользуемые пакеты, когда вы хотели минимизировать зону.
Чтобы получить POSIX- awk
поддержку переносимым способом в такой «небольшой серверной» установке, вам нужно установить 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. Только полные установки Solaris используются в подавляющем большинстве тестов, выполняемых Oracle и ISV, включая программу сертификации Open Group . Сокращенные установки поддерживаются, но не квалифицируются .
Если вы распространяете сценарии оболочки (или приложения, внедряющие сценарии оболочки / вызывая команды оболочки) для 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
нет в солярисе 11?nawk
"новаawk
", улучшенный AT & Tawk
.