- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Вопросы истории: UNIX, Linux, BSD и другие - Федорчук Алексей Викторович "alv"
Шрифт:
Интервал:
Закладка:
А во-вторых, потому,
Что есть ещё на свете горы, Куда так просто убежать.
То есть BSD-системы – последний рубеж применителей в мире UNIX-подобия.
Часть III. История интерфейсов
Глава двадцать первая. История shell'ов
Долгое время первым интерфейсом, с которым сталкивался применитель любой POSIX-совместимой ОС, был интерфейс командной строки: именно его он видел после ввода пароля и логина в текстовой консоли. И с ним же последним он расставался, выходя из системы с помощью одной из команд завершения работы. Нынче это обычно не так, вход в систему обычно выполняется в графическом режиме, через какой-нибудь дисплейный менеджер. Однако интерфейс командной строки (Command Line Interface, далее просто CLI) по прежнему остаётся Интерфейсом номер один для многих применителей. Почему его история в этой части книги и должна быть рассмотрена первой.
Конкретные реализации CLI представлены классом программ, именуемых командными интерпретаторами, командными оболочками или просто шеллами (shell – раковина, скорлупа). Большая часть командных оболочек делится, на основе синтаксиса интерпретируемого ими языка, на две группы – sh- и csh-совместимые. На самом деле различия между ними синтаксисом команд не исчерпываются, а лежат глубже – в подходе к обработке командных конструкций, но к истории, которую мы в данный момент обсуждаем, это отношения не имеет.
Появление первого шелла
Первой командной оболочкой для первозданного UNIX'а была программа, которая сначала именовалась, за отсутствием других, просто shell. Она была написана в 1978 году Стефаном Борном, вследствие чего за ней позднее закрепилось имя «шелл Борна» (Bourne shell). Язык её интерпретатора был основан на Algol 68, что определило мощные по тем временам возможности составления сценариев: достаточно сказать, что многие команды, позднее вошедшие в золотой фонд классических UNIX-утилит (породивших, в свою очередь, BSD- и GNU-утилиты), первоначально были реализованы именно как shell-скрипты. Примеры этому можно найти в книге Рассела Сейджа Приёмы профессиональной работы в UNIX, изданной около тридцати лет назад, но в методическом отношении представляющей интерес и по сей день.
Однако, средства интерактивной работы в первозданном шелле Борна были, мягко говоря, не очень хорошо развиты.. В известной таблице сравнения командных оболочек для UNIX, некогда составленной Брайаном Блэкмором (Brian Blackmore), во всех её строках, имеющих какое-либо отношение к интерактивности, можно видеть красноречивое NO . То есть в ней не было почити ничего из того, к чему мы привыкли с младых линуксовых ногтей: ни автодополнения, ни истории команд, ни возможности редактирования командной строки, ни даже возможности изменить вид приглашения.
Да, мы знаем, что потом всё это постепенно и по очереди будет появляться – сначала в шелле Корна (ksh), и в шелле Альмквиста (ash), затем изобильно в bash'е (возрождённом шелле Борна), и, наконец, в zsh, ставящем на сегодняшний день последнюю точку в развитии командных оболочек. Но сейчас-то мы находимся в далёких 70-х годах прошлого века, когда UNIX только вышел из родительских пенат AT&T (см. главу первую) и отправился в (почти) свободное плавание по университетам Америки, Европы и сопредельных стран вроде Австралии. Пришвартовавшись, в частности, и в университете Беркли, штат Калифорния.
Появление C-Shell
В Университете Беркли, как мы помним по главе второй, в это время вовсю разрабатывался собственный вариант UNIX, который позднее получит имя BSD4.4 и ляжет в основу всех свободных операционок берклианского семейства. И один из перворазработчиков BSD, Билл Джой, которому мы обязаны также текстовым редактором vi, уже в 1979 году предложил свою командную оболочку, получившую имя C-shell (или просто csh).
Почему? Если Борн при создании shell'п опирался на язык Алгол, то Джой для языка своего шелла применил синтаксис, сходный с таковым языка Си, исконного для UNIX. Это сделало оболочки sh и csh несовместимыми на уровне сценариев. Но зато в csh было добавлено множество интерактивных возможностей – автодополнение, буфер истории, средства навигации внутри командной строки и её редактирования, настройка вида приглашения, различие схемы настройки интерактивного и неинтерактивного шелла... Короче, всё то, что потом в той или иной мере инкорпорировали shell-совместимые оболочки, включая bash и zsh. И что ныне кажется нам неотъемлемым атрибутом любого шелла – всё это в конечном итоге происходит из csh.
Так что C-shell очень быстро стал непременной принадлежностью разрабатываемой в Брекли BSD-системы. Разработчики же коммерческих UNIX'ов пошли другим путём.
Как возрождался шелл
Как только что было сказано, по своим интерактивным возможностям шелл Борна, с одной стороны, оставлял желать лучшего. Со стороны же другой, перед глазами разработчиков проприетарных UNIX'ов был уже C-Shell, существенно более продвинутый в этом отношении. И потому у них появилась потребность обогатить /bin/sh средствами интерактивной работы.
Результатом воплощения этой потребности стала оболочка Корна (Korne Shell). Она сохранила совместимость с борновским шеллом на уровне синтаксиса, однако привнесла в него как дополнительные возможности интерпретации команд, так и приёмы, направленные на удобство интерактивной работы – образцом последних и послужил C-Shell. В итоге именно ksh лёг в основу стандарта POSIX, которому должны удовлетворять командные оболочки совместимых с ним систем.
Следует заметить, что соответствие этому стандарту – один из критериев отнесения некоей ОС к семейству UNIX или UNIX-подобных. В частности, именно такой стандартизированный шелл должен (был до недавнего времени) вызываться при исполнении общесистемных сценариев инициализации любой POSIX-системы. Сам же по себе POSIX shell – некая мифическая абстракция. Ближе всего ему соответствует ash, принятый в качестве стандартной оболочки пользователя во FreeBSD (под условным именем /bin/sh) и в NetBSD (а также широко используемая во всяких мини-дистрибутивах Linux).
Шеллы и Борна, и Корна не были свободно распространяемыми программами. Поэтому ни тот, ни другой не могли использоваться в таких ОС, как все BSD или Linux, хотя свободная реализация оболочки Корна (pdksh) и была создана. Однако, как и ее прототип, шелл Корна, она, несколько развившись относительно первозданного Bourne shell, обладала интерактивными достижениями, уже далекими от идеала. Столь же слабы они были и в ash. И потому наиболее широкое распространение из всего sh-совместимого семейства получила оболочка bash (что расшифровывается как «ещё одна оболочка Борна», «заново рожденный шелл» и тому подобным образом), разработанная в рамках проекта GNU.
Популярность bash в немалой степени была обусловлена его интерактивными возможностями – он аккумулировал все достижения интерактивной мысли sh- и csh-совместимых оболочек, прибавив к ним немало собственных. И умудрившись при этом сохранить базовую совместимость с POSIX shell. Конечно, многие его собственные особенности (так называемые «bash'измы») выходили за рамки этого стандарта. Однако для соответствия оному был предусмотрен режим совместимости – то есть bash был способен эмулировать стандартный POSIX shell.