355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Алексей Федорчук » Вопросы истории: UNIX, Linux, BSD и другие » Текст книги (страница 21)
Вопросы истории: UNIX, Linux, BSD и другие
  • Текст добавлен: 11 октября 2016, 22:51

Текст книги "Вопросы истории: UNIX, Linux, BSD и другие"


Автор книги: Алексей Федорчук



сообщить о нарушении

Текущая страница: 21 (всего у книги 28 страниц)

Linux: «персонализация снизу»

Итак, к концу 90-х годов прошлого века казалось, что все попытки «персонализации» Linux блистательно провалились. Как провалились незадолго перед тем попытки «персонализации» проприетарных UNIX'ов, о чём говорилось в главе девятой. Однако не тут-то было: в 1998 году начинается новый виток этого процесса. И связан он с выходом первой версии Linux Mandrake, созданной Гаэлем Дювалем сотоварищи. Именно тогда Linux впервые обратился лицом к «простому» пользователю. И в ответ «простой» пользователь впервые обратился в Linux'у – уже сознательно, а не по принуждению сисадмина.

Конечно, не только появление Mandrake было тому причиной, но и множество более иных факторов. О них говорилось в соответствующих статьях исторического цикла, так что повторяться не буду. Подчеркну лишь, что их кумулятивный эффект вызвал Linux-бум рубежа тысячелетий, нашедший своё отражение, в частности, многочисленными публикациями в компьютерных СМИ, писавших о Linux'е как о «UNIX'е с человеческим лицом». Что привлекло к этой ОС внимание многих «некомпьютерных» пользователей «персоналок», которые отныне могли полагаться не только на мнение «одного знакомого компьютещика», но и на источники информации, казавшиеся независимыми.

Увы, среди авторов этих источников по прежнему было немало энтузиастов «человекомордия» Linux'а и его любвеобилия к пользователям. В результате чего у последних часто складывалось впечатление, что Linux – «та же Windows, только бесплатная». Каковое рассеивалось при первом же столкновении с реальностью, оставляя осадок типа: заманили и бросили. После чего новообращённые линуксоиды столь же массово разбегались в разные стороны, подобно хлопцам пана атамана Грицько Таврического.

Однако разбегались не все. Многие «некомпьютерные» специалисты, убедившись на практике в эффективности инструментов Linux'а для решения их задач, оставались. И среди оставшихся, как ни странно, были не только инженеры и прочие «технари», но и гуманитарии. В первую очередь – юристы и переводчики. Что, впрочем, легко объяснимо: именно они наиболее чувствительны к «легальности» своего производственного инструментария.

Отступление. Так чем же привлекал Linux десктопных пользователей? Во-первых, конечно, ореолом новизны и даже таинственности: сейчас трудно воспроизвести чувство, с которым читались первые «толстые» книги об этой ОС. Как, впрочем, и о UNIX вообще – резкой грани между ними ещё не проводилось. И авторы-линуксоиды всегда считали обязательным подчеркнуть, что Linux – это в первую очередь одна из UNIX-подобных систем, а потом уже всё остальное. Так вот, чувство это можно было сравнить только с тем, которое испытываешь при чтении хорошего детектива ранее неизвестного автора.

Однако была и вторая, практическая, причина. Меня, например, Linux некогда подкупил эффективностью работы с текстами. Во второй половине 90-х годов прошлого века мне по долгу службы приходилось составлять много проектов, отчётов и тому подобных «научно-административных» документов, вся фактографическая сторона которых была мною написана и опубликована в виде журнальных статей, в сборниках трудов всяческих совещаний и так далее. Естественным желанием было воспользоваться методом «ножниц и клея», или, говоря современным языком, copy-and-paste. Средства предлагавшиеся текстовыми процессорами, выглядели в этом плане очень убого, требуя массы лишных телодвижений (впрочем, и нынче ситуация ничуть не изменилась). А вот комплекс утилит типа find, grep, cat, split и sed, плюс любой развитый текстовый редактор, решали эту задачу легко и непринуждённо.

Таким образом, следствием Linux-бума было формирование сообщества «простых» пользователей, применяющих персоналки с Linux'ом для решения своих производственных задач. И на протяжении всей первой половины нулевых годов оно росло и крепло, пока...

Применители и потребители

... пока компьютерный мир не начал меняться. То есть начал меняться он давно, с экспансией сначала мультимедии, затем массового Интернета и, наконец, вследствие широкого распространения компьютерообразных устройств, которые в народе ласково именуют гаджетами.

Отступление. Как известно, термин гаджеты, в отличие от многих других, имеет однозначный перевод на русский язык, и означает: «Гад же ты!» Именно эти слова сказала своему мужу жена одного компьютерщика, когда услышала, сколько стоит его новый наладонник.

А параллельно менялся и мир окружающий. Профессия «кустаря-одиночки с персональным компьютером» отмирала – в причины этого явления сейчас вдаваться неуместно. Однако остаётся фактом, что одни бывшие линуксоиды-надомники начинают переквалифицироваться в офисных менеджеров, другие находят приложение своим знаниям и умениям в администрировании корпоративных систем, третьи же, кому повезло больше – становятся штатными сотрудниками организаций своего профиля.

Соответственно, у них сменяется система приоритетов. На работе они работают в той системе, в которой прикажут (иногда эта система может оказаться Linux'ом). Дома же... дома они просто отдыхают. И компьютер из производственного инструмента превращается в медийно-развлекательный центр.

Нет, конечно, линуксоиды-одиночки, продолжающие индивидуальную производственную деятельность, до конца пока не вымерли, но сильно уменьшились в числе. Настолько, что ныне, когда речь заходит о компьютере для дома, подразумевается не машина для работы с текстами, графикой, не компьютер в буквальном смысле – то есть «решатель» счётных задач, а нечто, призванное проигрывать музыку, показывать кино, выходить в Интернет и общаться в социальныхе сетях. С наступлением десятых годов эта тенденция стала явной, требовалось лишь её терминологическая фиксация. И появилось деление всех тех, кого ранее гуртом записывали в пользователи, на потребителей контента и его создателей.

С первым термином трудно не согласиться: назвать человека, околокомпьютерные интересы которого сводятся к социальным сетям и просмотру Youtube, пользователем персонального компьютера – как-то язык не поворачивается. Более уместно для него именование просто «потребитель». Ибо он потребляет специально предназначенный для него контент точно так же, как пиво с попкорном.

А вот второй термин вызывает активное неприятие, ибо открытым текстом подразумевает, что все те, кто не «потребители», только и озабочены лабанием контента им на потребу. И потому последних могикан-индивидуалов можно назвать «применителями» – ибо они заняты применением персоналок со всякими Linux'ами для решения своих пока ещё производственных задач.

Только что я сказал о линуксоидах-применителях в контексте, допускающем установки между ними тождественного равенства. Разумеется, это не так: мне прекрасно известно о существовании применителей Windows или MacOS. Я даже догадываюсь, что их несколько больше, чем применителей-линуксоидов. И рискну высказать ещё одну крамольную мысль: в ближайшее время их, относительно последних, может стать ещё больше.

Обоснование этого утверждения потребовало бы отдельной главы, которая ещё не написана – и которую я пока писать не собираюсь, ибо пока надеюсь на лучшее. Однако перед многими действующими линуксоидами-применителями реально может встать выбор одного из трёх вариантов:

   1. «лучшие из лучших» пользователей Linux (то есть, если следовать логике кальвинистской морали, самые богатые) обзаведутся Mac'ами; собственно, уже обзаводятся;

   2. «лучшие из худших» (то есть в меру обеспеченные и законопослушные граждане, которых, надеюсь, среди читателей этого сочинения большинство) приобретут лицензионную Windows;

   3. «худшие из худших» – те, что, подобно попам, студентам и офицерам, вистуют на девятерной (соответственно, из жадности, от бедности или по пьяни), вернутся на Windows пиратскую.

И не только потому, что их к этому подвигнет принудительная сила реальности. Нет, к этому подталкивают сами разработчики и майнтайрнеры многих современных дистрибутивов. Ибо в момент, когда Linux на определённом витке диалектической спирали доходит до состояния готовности к созданию законченных систем для применителя, они начинают активное внедрение очередных новшеств, выводящее весь пар через гудок.

В своё время Андрей Боровский в своём блоге написал материал с умышленно провокационным заглавием – «Почему Линукса нет и не будет на десктопах», главный тезис которого сводился к тому, что Linux битву за десктопы проиграл. Это не так. Linux не проиграл битву за десктопы. Он от неё постоянно уклонялся именно в те моменты, когда, следуя завету Бонапартия, в драку следовало ввязываться – «а там будет видно».

Вот уже полтора десятилетия по Сети гуляют оценки количества пользователей Linux’а по отношению к числу «персоналок» вообще. И все эти годы оценки они не меняются, составляя 1-2%. Что рассматривается как свидетельство отсутствия роста «десктопной» доли этой ОС. На счёт «доли» – согласиться можно, хотя каковы источник таких оценок – тайна сия велика есть. Но предположим, что источники эти вполне компетентны. Хотя эмпирические наблюдения показывают, что абсолютное число «настольных» пользователей Linux’а растёт. Только среди моих личных и виртуальных знакомых оно за те же пятнадцать увеличилось минимум на порядок.

Объяснение этому парадоксу легко найти, если вспомнить, что за то же время число пользователей персональных компьютеров вообще увеличилось порядка на два. Причём число потребителей росло опережающими темпами по сравнению с количеством применителей. Превратившись в бытовой прибор, персональный компьютер стал своего рода предметом мебели современной квартиры, используемым для разговоров по скайпу, сидению в социальных сетях, потребления всякого рода мультимедии и тому подобных занятий, далёких от производственной деятельности и не очень располагающих к применению Linux’а. Так что остаётся только удивляться сохранению процента линуксоидов на протяжении времени, столь длительного и столь насыщенного переменами в отношении к «персоналкам».

Возникает глубокое подозрение, что большинство разработчиков Linux и майнтайнеров его дистрибутивов панически боятся того, что Linux станет по настоящему десктопным. То есть в тотально придёт на машины применителей. Ведь тогда им пришлось бы отвечать за тех, кого приручили. А не с азартом чукчи хирурга восклицать: «Опять ничего не получилось!» И начинать перекраивать всё заново и по-живому. Обрекая тем самым Linux на участь испорченной и урезанной копии потребительских систем.

Заключение

Я планировал в этой главе говорить не о тенденциях развития Linux'а, а об эволюции состава его пользователей. И уж тем более не хотел заканчивать её на минорных тонах. Так что попробую найти поводы для оптимизма – их у нас (пока?) есть. Потому что, во-первых, не все майнтайнеры занимаются кардинальными «улчшениями» системы – некоторые уделяют внимание и развитию инфраструктуры, равно пригодной для разработчиков и применителей их разработок. Ярким примером таких дистрибутивов является Ubuntu, вокруг которой выросло большое количество «применительских» решений.

А во-вторых, потому,

Что есть ещё на свете горы, Куда так просто убежать.

То есть 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.

Однако главным для популярности bash было то, что эта оболочка оказалась тесно интегрирована с операционной системой Linux: именно bash волею судеб стал одной из первых программ, которые Линус запустил поверх своего новосозданного ядра. И потому идеи bash-скриптинга пронизали Linux до самых его оснований. Ну а для совместимости использовался тот самый режим эмуляции: в Linux файл, запускающий POSIX shell (по стандарту он должен именоваться /bin/sh), являет собой жесткую или символическую ссылку на реальный /bin/bash. Последний же, будучи вызванным таким образом, полностью воспроизводит функционально стандартный POSIX shell (разумеется, путем утраты своих продвинутых функций).

История tcsh

Как уже говорилось, оболочка csh привнесла в шеллы элементы интерактивности. Однако и её возможности в этом отношении были далеки от идеала. Что особенно почувствовалось в начале 90-х годов, когда, с одной стороны, произошло освобождение BSD-систем в лице NetBSD и FreeBSD от тяжёлого наследия проприетарного режима лицензирования. А с другой – началось победное шествие Linux'а с его стандартной оболочкой GNU bash, обходящей древний csh на несколько корпусов.

И тогда разработчики FreeBSD вспомнили об оболочке tcsh, которая, основываясь на синтаксисе C-shell, с давних времён разрабатывалась сначала Кэном Григом в университете Карнеги-Меллона, а затем Полом Плэйсвэем в университете Огайо. Чем она была примечательна? Сейчас увидим.

Изначально tcsh создавалась по образу и подобию командного интерпретатора операционной системы TENEX – собственно, имя её и означает TENEX csh. А особенностью TENEX – древней, ещё до-UNIX'овой, операционки (из недр которой, кстати, происходит и знаменитая «собака» в адресах электронной почты) были чрезвычайно длинные команды, да ещё и с избыточными словами «для ясности». С такими командными директивами было бы трудно работать без развитых средств навигации и редактирования командной строки. Каковые и стали отличительными особенностями её командного интерпретатора, получившего имя TENEX C-shell.

Разработчики FreeBSD, взяв за основу TENEX C-shell, адаптировали его для своей операционной системы. В которой он и утвердился в качестве стандартного login shell администратора. В OpenBSD же и DragonFly tcsh изначально стал шеллом по умолчанию «для всех». Применяется он и в таком юзер-ориентированном отпрыске BSD-клана, как PC-BSD. Более того, первое время tcsh выступал шеллом по умолчанию в MacOS X, пока его не наменили на bash.

Однако и поныне имя /bin/csh (как и соовтетствующие ему конфигурационные файлы /root/.cshrc и $HOME/.cshrc) сохранилось в файловой иерархии всех BSD-систем как реликт предшествующей эпохи. Однако теперь оно соответствует не самостоятельной оболочке, а было лишь жесткой ссылкой на тот же tcsh. Поведение же последней по умолчанию абсолютно идентично изначальному C-Shell. Это вызвано не эмуляцией предшественника, как в случае с bash, запускаемых в качестве /bin/sh, а исключительно настройками – точнее, почти полным отсутствием таковых по умолчанию.


    Ваша оценка произведения:

Популярные книги за неделю