Прочие оболочки

Оболочка bash — не единственная используемая в Linux. Исторически первой среди нихбыла собственно оболочка Борна — sh (Bourne Shell), родившаяся вместе с первыми LINUX-системами. Она была реализована для всех LINUX и LINUX-подобных систем и принята в них в качестве стандартной. Многие общесистемные сценарии требуют для своей работы оболочки sh. Именно поэтому в первой строке большинства сценариев приводится строка #!/bin/sh.

Основные отличия sh от bash можно охарактеризовать частицей НЕ: она не поддерживает автодополнения команд и путей при вводе, истории команд, редактирования командной строки, контроля заданий и многихдругих возможностей, ставших стандартными для современных оболочек. Кроме того, она не является свободно распространяемой.

Все это служит причиной того, что в ASPLinux оболочка sh не используется.

Правда, в каталоге /bin можно обнаружить файл /bin/sh, однако это — не более чем символическая ссылка на /bin/bash, который и запускается, если оболочка sh в явном виде запрашивается каким-либо сценарием.

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

cat /etc/shells

содержание его следующее:

/bin/bash2

/bin/bash

/bin/sh

/bin/ash

/bin/bash

/bin/tcsh

/bin/csh

/bin/zsh

Файлы /bin/bash2 и /bin/sh — символические ссылки на /bin/bash . Оболочки ash и zch принадлежат к семейству Shell-совместимых, csh и tcsh — к C-совместимым оболочкам.

Оболочка ash — самая маленькая и компактная из всехиспользуемыхв Linux: размер ее около 64 Кбайт (для сравнения, bash — более 500 Кбайт). Этим обусловлены многие ограничения ее возможностей (нет автодополнения, истории команд и ряда другихинтерактивныхвозможностей). Однако, в отличие от sh , ash поддерживает некоторые современные функции работы со сценариями. И потому используется главным образом при создании загрузочных дискет для аварийныхситуаций.

В отличие от ash , zsh — одна из самыхполнофункциональныхоболочек, поддерживающая все современные ихфункции, как интерактивные (редактирование командной строки, автодополнение, историю команд и т.д.), так и ориентированные на использование в сценариях, а также наибольшее количество команд (более 80) и опций приглашения командной строки (более 50).

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

Оболочка csh — первый представитель семейства C-совместимыхоболочек. По сравнению с близкой по возрасту sh она поддерживала многие дополнительные возможности, ставшие позднее стандартными для современныхобо-лочек (автодополнение, историю команд и т.д.), однако реализованы они обычно иначе, чем в bash . Так, для автодополнения используется не клавиша табуляции Tab , а Esc .

Как и sh , собственно исходная оболочка csh вASPLinuxне используется — файл /bin/csh представляет собой символическую ссылку на /bin/tcsh . Оболочка tcsh — клон csh , наделенный многими дополнительными возможностями, реализация которыхприближена к таковой bash . При интерактивной работе заметить различие между tcsh и bash очень трудно — оно проявляется только при настройке и создании сценариев, что связано с отличием синтаксиса языка интерпретатора csh . Так, внутренние переменные оболочки tcsh задаются с помощью конструкции вида:

set имя [= значение]

Для определения переменной окружения используются следующие конструкции

setenv EDITOR joe

и т.д., чем достигается несколько больший (по сравнению с Shell-совместимыми оболочками) лаконизм сценариев.

В заключение следует подчеркнуть, что ни одна из полнофункциональных оболочек, включенныхв составASPLinux, не имеет принципиальныхпреимуществ перед другими. И использование какой-либо из них— исключительно дело вкуса и привычек пользователя.

Для смены оболочки можно использовать команду chsh (от change shell). В ответ на нее предлагается сначала ввести пароль пользователя, а затем — указать полный путь к исполнимому файлу новой оболочки

New shell [/bin/bash]:

Например, для смены bash на zsh, в этой строке следует ввести /bin/zsh, и так далее.

Еще материалы по теме: