Типы оболочек


Как я уже много раз говорил, UNIX - это многозадачная, многопользовательская операционная система. Многозадачность очень полезна - однажды привыкнув к ней, вы будете всегда ее использовать. Прежде всего, вы сможете выполнять задачи в фоновом режиме, переключать задачи и объединять их в конвейер, достигая сложных результатов простыми средствами.

Многие из возможностей, которые мы будем обсуждать в этом разделе, обеспечиваются самой оболочкой (shell). Будьте внимательны, не путайте UNIX (фактическую операционную систему) с оболочкой - оболочка, это лишь интерфейс с находящейся за ней системой. Оболочка обеспечивает выполнение громадного числа функций помимо собственно UNIX.

Оболочка - это не только интерпретатор интерактивных команд, которые вы можете ввести, получив от оболочки подсказку (готовности принимать команды). Это также мощный командный язык, который позволяет писать программы (shell-scripts), объединяющие несколько команд в командный файл. Пользователи MS-DOS почувствуют здесь нечто схожее с ``batch-файлами''. Использование программ на языке оболочки (shell) - это очень мощное средство, которое позволяет автоматизировать и и существенно повысить эффективность использования UNIX. Смотрите дополнительно в Разделе 3.13.1.

Существует несколько типов оболочек в мире UNIX. Две главные - это ``Bourne shell''(shell Баурна) и ``C shell'. Shell Баурна (или просто shell) использует командный синтаксис, похожий на первоначально для UNIX придуманный (вроде UNIX System III). В большинстве UNIX-систем shell Баурна имеет имя /bin/sh (где sh сокращение от ``shell''). C shell использует иной синтаксис, чем-то напоминающий синтаксис языка программирования Си. В большинстве UNIX-систем он имеет имя /bin/csh.

В Linux есть несколько вариаций этих оболочек. Две наиболее часто используемые, это Новый Shell Баурна (Bourne Again Shell) или ``Bash'' (/bin/bash) и Tcsh (/bin/tcsh). Bash - это развитие прежнего shell с добавлением многих полезных возможностей, частично содержащихся в C shell. Поскольку Bash можно рассматривать как надмножество синтаксиса прежнего shell, любая программа, написанная на добром старом shell Баурна должна работать и в Bash. Для тех, кто предпочитает использовать синтаксис C shell, Linux поддерживает Tcsh, который является расширенной версией C shell.

Тип оболочки, которую вы решили использовать - это почти как выбор религии. Некоторые предпочитают синтаксис shell Баурна с дополнительными возможностями, предоставляемыми Bash, а некоторые - более структурированный синтаксис C shell. Для "нормальных" команд, таких как cp и ls, тип используемого вами shell никакой роли не играет. Только когда вы начнете писать командные файлы или использовать некоторые новые свойства оболочек, различия между ними становятся существенными.

При обсуждении далее некоторых свойств оболочек мы будем обращать внимание на различие между Баурновским shell и C shell. (Если вам это действительно очень интересно, почитайте Руководство по поводу bash и tcsh).



Содержание раздела