Существует несколько широко распространенных командных процессоров и еще несколько малораспространенных, специфичных для конкретных версий UNIX.
Все разговоры об оболочках сводятся к тому, что существуют оболочки, имеющие много общего с оболочкой Bourne, и оболочки, имеющие много общего с С–оболочкой. Вопрос состоит в том, какие оболочки есть в вашей системе? И с какой оболочкой вы хотели бы работать?
Рассмотрим список имеющихся командных процессоров с кратким описанием их лучших возможностей.
1. sh – Оболочка Bourne написана Стефаном Борном (Stephen Bourne) в Bell Laboratories фирмы AT&T – там, где разрабатывалась сама ОС UNIX. С тех пор многие поставщики компьютеров, создавая собственные платформенно–ориентированые версии UNIX, сохранили совместимость с основными элементами оболочки Bourne.
2. csh – C–оболочка имеет управление заданиями (+) и псевдонимы с аргументами (+). Это разработка Билла Джоя (Bill Joy – автор текстового редактора vi) в Калифорнийском университете. В качестве модели синтаксиса Б. Джой выбрал язык программирования Си. Команды оболочки Си и операторы структурного программирования – близки по синтаксису эквивалентным операторам Си. Поэтому она называется С–оболочкой.
Управление заданиями (job control) – это возможность выполнять задание в фоновом режиме без специальных команд.
Псевдоним (alias) – это другое имя для команды.
3. ksh – Оболочка Korn имеет управление заданиями (+) и псевдонимы без аргументов (–).
Оболочка Korn названа по имени ее автора Дэвида Г. Корна (David G. Korn), работающего в Bell Laboratories фирмы AT&T. Он написал первую версию программы в 1986 г. Таким образом, оболочка Korn является прямой наследницей оболочки Bourne. Она почти полностью совместима с оболочкой Bourne: практически любой сценарий оболочки, написанный для оболочки Bourne, может быть корректно выполнен оболочкой Korn. Однако сценарии оболочки Korn, как правило, не могут корректно обрабатываться оболочкой Bourne.
Перечень усовершенствований, имеющихся в оболочке Korn, весьма обширен: от тривиальных до весьма существенных. Наиболее серьезные улучшения связаны с упрощением клавиатурного взаимодействия с оболочкой, значительно расширен синтаксис и технология программирования оболочки.
Усовершенствования можно разделить на следующие категории:
- Псевдонимы команд. Псевдонимы позволяют сокращать часто используемые команды, не обращаясь к программированию оболочки, тем самым повышая общую производительность при работе с клавиатурой.
- История команд. Механизм истории команд можно использовать сам по себе или в сочетании с редактированием для изменения и повторного использования ранее введенных команд. Историю команд можно также использовать в качестве журнала, регистрирующего все действия на клавиатуре.
- Редактирование команд. Оболочка Korn обеспечивает два стиля редактирования команд, которые предоставляют возможность просматривать и корректировать команды в процессе их ввода. Редактирование команд может значительно уменьшить время, затрачиваемое на повторный ввод команд.
- Управление каталогами. Оболочка Korn обеспечивает расширения команды cd, новый синтаксис записи путей и новые переменные оболочки, способствующие упрощению перехода между каталогами и сокращению длинных имен путей.
- Арифметические выражения. Оболочка Korn обладает встроенными возможностями выполнения арифметических операций, обработки строк и массивов.
- Улучшение синтаксиса. Оболочка Korn предоставляет усовершенствования синтаксиса оператора if, встроенной команды test и выражений подстановки команд, которые расширяют возможности и улучшают удобочитаемость сценариев оболочки.
- Шаблоны. Оболочка Korn поддерживает большее число форматов шаблонов, что снижает объем работы с клавиатурой.
- Последовательная обработка. Привычный канал оболочки Bourne расширен для обеспечения более гибкого программного взаимодействия между сценарием оболочки и вызываемыми командами.
- Выполнение заданий. Оболочка Korn включает в себя свойства мониторинга пакетных заданий, упрощающих выполнение процессов в фоновом режиме и предоставляющих возможность одновременного выполнения большего числа заданий.
Многие свойства оболочки Korn дублируют свойства оболочки С, но с другим синтаксисом. Это сделано умышленно. Хотя оболочка С предоставляет множество необходимых свойств, ее общий синтаксис несовместим с оболочкой Bourne, что делает эту оболочку несколько выпадающей из общего стиля UNIX. Оболочка Korn разрешает это долго существовавшее противоречие с мире UNIX, предоставляя требуемые свойства клавиатуры и программирования оболочки, но в форме, совместимой со старым, хорошо проработанным стандартом оболочки Bourne.
4. bash– оболочка Bourne–Again имеет много возможностей, аналогичных возможностям оболочки Korn. Ее можно встретить в некоторых разновидностях UNIX, таких как LINUX. Это новая комбинация стиля программирования оболочки Bourne и возможностей С–оболочки, предоставляется бесплатно.
5. tcsh – расширение csh, совместимое с ним по командам, макроопределениям и синтаксису языка скриптов. tcsh был написан в конце 1970–х годов Кеном Гриром (Ken Greer). Он начал работу над tcsh в Университете Карнеги–Мелон (Carnegie–Mellon University), а продолжил ее Пол Плэйсвэй (Paul Placeway) в восьмидесятые годы в Университете Огайо (Ohio State). Основные отличия tcsh от csh сводятся к усовершенствованию редактирования командной строки и ряду дополнений в помощь создателям скриптов (например, переменные среды окружения, доступные только для чтения).
Завершение имени файла (file name completion) – это способность оболочки угадывать вводимое имя файла по нескольким первым буквам.
Каждый командный процессор имеет свои преимущества и свои недостатки. Нельзя сказать ни об одном, что он лучше другого. Для различных приложений можно выбрать наиболее подходящий shell. Обычно работают с одним, максимум с двумя командными процессорами.
Какую бы оболочку вы ни выбрали, все они имеют одно и то же назначение – предоставить пользователю интерфейс к UNIX.
В Solaris по умолчанию устанавливаются несколько командных процессоров, в том числе sh, csh, tcsh, bash и другие; командным процессором по умолчанию является sh.