Введение
Компьютерная программа, которая предоставляет сервисы операционной системы пользователю или другим программам. В вычислительной технике, оболочка — это компьютерная программа, которая предоставляет сервисы операционной системы пользователю или другим программам. Как правило, оболочки операционных систем используют либо интерфейс командной строки (CLI), либо графический пользовательский интерфейс (GUI), в зависимости от роли компьютера и конкретной задачи. Она называется оболочкой, поскольку является внешним слоем операционной системы.
In computing, a shell is a computer program that exposes an operating system's services to a human user or other programs. In general, operating system shells use either a command line interface (CLI) or graphical user interface (GUI), depending on a computer's role and particular operation. It is named a shell because it is the outermost layer around the operating system.
Обзор
Операционные системы предоставляют различные услуги своим пользователям, включая управление файлами, управление процессами (запуск и завершение приложений), пакетную обработку, а также мониторинг и настройку операционной системы. Большинство оболочек операционной системы не являются прямыми интерфейсами к базовому ядру, даже если оболочка взаимодействует с пользователем через периферийные устройства, непосредственно подключенные к компьютеру. Оболочка – это специальное приложение, которое использует API ядра точно так же, как и другие прикладные программы. Оболочка управляет взаимодействием пользователя с системой, запрашивая ввод, интерпретируя его и обрабатывая вывод из базовой операционной системы (подобно циклу "чтение-выполнение-печать", REPL). Поскольку оболочка операционной системы фактически является приложением, её можно легко заменить другим аналогичным приложением для большинства операционных систем. Помимо оболочек, работающих на локальных системах, существуют различные способы предоставления доступа к удаленным системам локальным пользователям; такие подходы обычно называют удаленным доступом или удаленным администрированием. Изначально доступный на многопользовательских мэйнфреймах, которые обеспечивали текстовые пользовательские интерфейсы для каждого активного пользователя одновременно посредством текстового терминала, подключенного к мэйнфрейму через последовательную линию или модем, удаленный доступ распространился на Unix-подобные системы и Microsoft Windows. В Unix-подобных системах протокол Secure Shell (SSH) обычно используется для текстовых оболочек, а SSH-туннелирование может использоваться для графических пользовательских интерфейсов (GUI) на основе X Window System. В Microsoft Windows протокол удаленного рабочего стола может использоваться для обеспечения GUI-удаленного доступа, а начиная с Windows Vista, PowerShell Remote может использоваться для текстового удаленного доступа через WMI, RPC и WS Management. Большинство оболочек операционных систем относятся к одной из двух категорий: командная строка и графическая. Оболочки командной строки предоставляют интерфейс командной строки (CLI) для операционной системы, в то время как графические оболочки предоставляют графический пользовательский интерфейс (GUI). Другие возможности, хотя и менее распространенные, включают голосовой пользовательский интерфейс и различные реализации текстового пользовательского интерфейса (TUI), отличные от CLI, такие как текстовые меню. Относительные преимущества оболочек CLI и GUI часто являются предметом обсуждений. Многие пользователи компьютеров используют и то, и другое в зависимости от выполняемой задачи.
История
Ранние интерактивные системы предоставляли простой интерпретатор командной строки как часть резидентного монитора. Этот интерпретатор мог называться по-разному, например, COMCON в системах DEC TOPS 10. Интерпретатор выполнял одну из ряда предопределенных команд, одна из которых заключалась в запуске пользовательской программы. Типичные команды позволяли регистрировать и отключать пользователя от системы, выделять, освобождать и управлять устройствами и файлами, а также запрашивать различную информацию о системе или пользовательском процессе. В 1964 году, для операционной системы Multics, Луи Пузин сформулировал идею "использования команд, подобных языку программирования", и ввел термин "оболочка" для ее описания. В документе 1965 года оболочка определяется как "общая процедура, автоматически вызываемая супервизором всякий раз, когда пользователь вводит сообщение на своей консоли, в момент, когда у него нет другого процесса в активном исполнении под контролем консоли. Эта процедура действует как интерфейс между сообщениями с консоли и подпрограммой [в супервайзоре]". Эта система была впервые реализована Глендой Шредер и безымянным сотрудником General Electric. Multics также представила активную функцию – ключевую концепцию во всех последующих оболочках. Она определяется как строка, которая заменяется строковым значением возврата перед выполнением командной строки, содержащей ее. Активные функции часто используются для реализации макросов языка команд. В 1971 году Кен Томпсон разработал оболочку Томпсона в первой версии Unix. Хотя она была проще, чем оболочка Multics, она содержала некоторые инновационные функции, которые были перенесены в современные оболочки, включая использование < и > для перенаправления ввода и вывода. Графическая оболочка впервые появилась в системе NLS Дугласа Энгельбарта, продемонстрированной в декабре 1968 года на Fall Joint Computer Conference в Сан-Франциско, в том, что назвали "Матерью всех демонстраций". Коллеги Энгельбарта из Стэнфордского исследовательского института перенесли эту концепцию в исследовательский центр Xerox Palo Alto (PARC), где она была реализована в Alto, представленном в 1973 году. Оттуда идея распространилась на Lilith Никлауса Вирта в 1980 году и Apple Lisa в 1983 году, а затем стала повсеместной.
Командная линия
Интерфейс командной строки (CLI) — это оболочка операционной системы, использующая буквенно-цифровые символы, вводимые с клавиатуры, для передачи инструкций и данных операционной системе в интерактивном режиме. Например, телетайп может отправлять коды, представляющие нажатия клавиш, в программу интерпретатора команд, работающую на компьютере; интерпретатор команд анализирует последовательность нажатий клавиш и выдает сообщение об ошибке, если не может распознать последовательность символов, либо выполняет другие действия программы, такие как загрузка приложения, перечисление файлов, вход пользователя и многое другое. Операционные системы, такие как UNIX, располагают большим разнообразием оболочек с различными командами, синтаксисом и возможностями, при этом оболочка POSIX является базовой. Некоторые операционные системы имели только один тип командного интерфейса; распространенные операционные системы, такие как MS DOS, поставлялись со стандартным командным интерфейсом (COMMAND.COM), но часто были доступны и сторонние интерфейсы, предоставляющие дополнительные функции, такие как меню или удаленное выполнение программ. Приложения также могут реализовывать интерфейс командной строки. Например, в Unix-подобных системах программа telnet имеет ряд команд для управления соединением с удаленной компьютерной системой. Поскольку команды для программы состоят из тех же нажатий клавиш, что и данные, отправляемые на удаленный компьютер, требуется способ их различения. Можно определить управляющую последовательность, используя специальное локальное нажатие клавиши, которое никогда не передается, но всегда интерпретируется локальной системой. Программа переходит в модальный режим, переключаясь между интерпретацией команд с клавиатуры и передачей нажатий клавиш в качестве данных для обработки. Одной из особенностей многих командных оболочек является возможность сохранения последовательностей команд для повторного использования. Файл данных может содержать последовательности команд, которые CLI может выполнять, как если бы они были введены пользователем. Специальные возможности CLI могут применяться при выполнении этих сохраненных инструкций. Такие пакетные файлы (файлы сценариев) можно многократно использовать для автоматизации рутинных операций, таких как инициализация набора программ при перезагрузке системы. Использование оболочек в пакетном режиме обычно включает структуры, условные операторы, переменные и другие элементы языков программирования; некоторые имеют только самое необходимое для этой цели, другие являются сложными языками программирования сами по себе. И наоборот, некоторые языки программирования можно использовать интерактивно из командной оболочки операционной системы или в специально разработанной программе. Несколько командных оболочек, таких как Xonsh, Bash (оболочка Unix) и Z shell, предлагают автодополнение команд, позволяя интерпретатору расширять команды на основе нескольких символов, введенных пользователем. Интерпретатор командной строки может предлагать функцию истории, позволяющую пользователю вспомнить ранее введенные команды и повторить их, возможно, с некоторыми изменениями. Поскольку все команды операционной системе приходилось вводить вручную, были распространены короткие имена команд и компактные системы для представления параметров программ. Короткие имена иногда было трудно запомнить, а ранним системам не хватало ресурсов памяти для предоставления подробного онлайн-руководства пользователя.
Графические оболочки
Графический пользовательский интерфейс (GUI) предоставляет средства для графического управления программами, позволяя выполнять такие операции, как открытие, закрытие, перемещение и изменение размеров окон, а также переключение фокуса между ними. Графические оболочки могут входить в состав сред рабочего стола или поставляться отдельно, даже в виде набора слабо связанных утилит. Большинство графических пользовательских интерфейсов развивают метафору «электронного рабочего стола», где файлы данных отображаются как бумажные документы на столе, а приложения – в виде графических элементов, а не вызываются по имени команды.
Microsoft Windows
Современные версии операционной системы Microsoft Windows используют Windows Shell в качестве оболочки. Windows Shell предоставляет среду рабочего стола, меню "Пуск" и панель задач, а также графический пользовательский интерфейс для доступа к функциям управления файлами операционной системы. В более ранних версиях также присутствовал "Проводник программ", который являлся оболочкой для серии 3.x Microsoft Windows и фактически поставлялся с более поздними версиями Windows типов 95 и NT, по крайней мере, до Windows XP включительно. Интерфейсы версий Windows 1 и 2 значительно отличались. Приложения для рабочего стола также могут рассматриваться как оболочки, если они используют сторонний движок. Кроме того, многие пользователи и разработчики, недовольные интерфейсом проводника Windows, создали программное обеспечение, которое либо изменяет функциональность и внешний вид оболочки, либо полностью заменяет её. WindowBlinds от StarDock – хороший пример приложения первого типа. LiteStep и Emerge Desktop – хорошие примеры приложения второго типа. Программы совместимости и специализированное программное обеспечение позволяют пользователям Windows использовать аналоги многих Unix-подобных графических интерфейсов, описанных ниже, а также Macintosh. Эквивалент OS/2 Presentation Manager для версии 3.0 может запускать некоторые программы OS/2 при определенных условиях, используя подсистему среды OS/2 в версиях Windows NT.
Другие применения
"Оболочка" также используется в широком смысле для описания прикладного программного обеспечения, которое "построено вокруг" определенного компонента, например, веб-браузеров и почтовых клиентов, по аналогии с раковинами, встречающимися в природе. Фактически, (командная строка) оболочка заключает в себе ядро операционной системы. Их также иногда называют "обёртками".