Обзор оболочек или Выбираем себе shell по душе

Задолго до того, как появились "графические окна" с кучей "ярлыков и папок" на экранах наших компьютеров, компьютеры управлялись с помощью команд, вводимых в консоли, которая и называется командной оболочкой (англ. shell). Очень многих пользователей, впервые включивших компьютер с установленной ОС Linux, пугающе встречал "пустой экран" со строчкой "login:" (Это уже сейчас очень многие знают, что логин - это так называемое "имя пользователя" и та строчка не что иное, как приглашение ввести имя пользователя, зарегистрированного в системе. А в те давние времена...).


Сегодня уже многие дистрибутивы Linux встречают пользователя красивым графическим приглашением, минуя которое (конечно же введя свой логин и пароль) вы попадаете в удобный интуитивный интерфейс рабочей среды (англ. graphic user interface - GUI), предлагающей пользователю богатые возможности управления своей системой. Но какой бы ни была красивой и изящной рабочая среда, опытные пользователи ОС Linux знают, что никакой графический интерфейс не заменит по своему функционалу командную оболочку. Да, многим пользователям, привыкшим настраивать свой компьютер с помощью "кликов" мышкой, командная оболочка покажется на редкость скучной и однообразной. Но, поверьте, чем дольше вы будете работать в ней и с интересом осваивать ее, тем все больше будете чувствовать ее мощь и гибкость в работе.

Так что же из себя представляет командная оболочка? Командная оболочка есть ни что иное, как командный интерпретатор - программа, которая представляет из себя как бы "посредника" между пользователем и операционной системой. Ее основное назначение - это работа с пользователем в диалоговом режиме - ожидание ввода команд, обработка и их выполнение. С ее помощью также возможно контролирование сеанса работы посредством набора переменных, с помощью которых можно определить расположение домашней директории пользователя и т.д. И более того! В ней можно программировать! Большое количество стартовых и других сценариев написаны на языке команд интерпретатора. Позднее мы с вами обязательно займемся написанием сценариев на этом языке.

В большинстве современных дистрибутивов ОС Linux в качестве командной оболочки по умолчанию используется оболочка Bash. Это вызвано прежде всего широким спектром функций и удобством использования данной оболочки. Тем не менее существует немало других оболочек и немало пользователей, которые используют их в работе.

Итак, рассмотрим несколько основных оболочек.

Bash

Как вы уже знаете, эту оболочку используют по умолчанию многие современные дистрибутивы Linux. А почему разработчики дистрибутивов выбрали именно эту командную оболочку? Чем именно она заслужила честь быть оболочкой по умолчанию?

Дело даже не в том, что она "легковесна" и быстра - некоторые оболочки намного меньше и быстрее этой оболочки. Дело скорее в том, что эта оболочка по своим функциям и по гибкости использования намного превосходит все остальные оболочки. Также она обладает некоторыми функциями, которые превосходят стандарт POSIX. Очень многие командные сценарии большинства Linux-систем написаны на Bash.

Равно как и в большинстве оболочек, в Bash присутствует функция стандартного tab-дополнения. Она несомненно помогает в работе - после набора нескольких букв, с которых начинается какая-либо команда, нажмите клавишу Tab и Bash дополнит их до полного названия команды. Если в системе присутствуют несколько команд, начинающихся с набранных начальных букв, то оболочка выведет на экран эти команды. После этого она будет ожидать от вас ввода следующего символа, который и исключит схожесть необходимой вам команды от других, и затем дополнит ее до необходимого названия. Также это работает и для названий файлов и путей к директориям. Попробуйте! Это и вправду удобно!

Оболочка имеет обширную документацию, получить которую вы можете, набрав команду man bash. В плане структуризации справочной информации Bash проигрывает оболочке Zsh, в которой вся документация распределена по нескольким страницам и имеет более наглядный вид.

Fish

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

Tcsh

Поставляемая ранее по умолчанию с ранними версиями MacOS, эта оболочка ничем не выделяется, кроме как проверкой правописания и синтаксисом языка сценариев, напоминаемым язык Си. Она не предлагает ни опциональных ни программируемых дополнений.

Zsh

Оболочка Zsh имеет примерно такой же функционал, как и оболочка Bash. Но при этом отличается тем, что она имеет функцию проверки правописания, более быстрое выполнение сценариев, расширенную подстановку имени файла, применяемую при поиске и (привет лентяям!) tab-дополнение имен пользователей или хостов при использовании ssh. При первом запуске этой оболочки на экран выводится программа настройки, в которой вы сможете отрегулировать и настроить многочисленные функции. В процессе работы вы можете расширять эту программируемую оболочку сколько душе угодно!

Ну, вот и разобрались из чего выбирать. Думаю, что вы выберете именно ту оболочку, которая вам больше всего понравилась. Пусть даже и опытным путем.

Вначале мы должны "оглядеться" и узнать, какая же командная оболочка установлена у нас. Для этого выполните следующую команду:

$ echo $SHELL

Вы увидите следующее:

/bin/bash

Как мы видим, значение переменной $SHELL (а она и содержит значение командной оболочки по умолчанию) - bash. Это означает, что в системе по умолчанию для пользователей установлена оболочка Bash, исполняемый файл которой находится в системной директории /bin. Позднее в одной из статей мы рассмотрим назначение всех системных директорий, а пока остановим свой взгляд на самой оболочке.

Возможно у некоторых пользователей, использующих ОС Linux, после выполнения вышеуказанной команды, на экран выведется другое значение. Не переживайте - это нормально! Дело в том, что вы можете поставить себе любую командную оболочку. Например, себе поставить "продвинутую", а жене - более понятную.

Список имеющихся в системе командных оболочек находится в файле /etc/shells, просмотреть который можно командой: cat /etc/shells. А сменить оболочку на другую можно такой командой:

# usermod -s /bin/zsh bandy

где zsh - это название устанавливаемой оболочки, а bandy - имя пользователя, которому вы ее меняете.