Типы оболочек в системе Linux

Оболочка (shell) — важная часть любой пользовательской сессии Linux. Для выполнения задач в Linux доступны несколько типов командных оболочек, каждая из которых имеет свои уникальные свойства. Поэтому в определенных ситуациях одна оболочка может оказаться эффективнее другой.

В этом туториале мы расскажем, что такое командная оболочка Linux и почему она важна, а также разберем их типы, функции и свойства.

Что такое оболочка и зачем она нужна?

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

Ядро — это сердце любой операционной системы. Оно отвечает за управление и выполнение процессов, а также за правильное использование системных ресурсов.

Командная оболочка — это программа, которая служит интерфейсом между пользователем и ядром. Она позволяет давать команды ядру и получать от него ответы. Через нее можно запускать программы и утилиты на ядре. Таким образом, по сути оболочка — это программа, с помощью которой можно запускать другие программы в системе.

Возможность взаимодействия с ядром делает командные оболочки мощным инструментом. Без этого пользователь не сможет получить доступ к утилитам операционной системы.

Давайте разберемся в основных типах оболочек, которые доступны для среды Linux.

Типы оболочек

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

1: Bourne Shell (sh)

Разработанная в AT&T Bell Labs Стивом Борном, Bourne Shell Считается первой оболочкой UNIX. Она обозначается как sh. 

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

Читайте также: Аргументы командной строки в shell-скриптах

Но у оболочки Bourne есть ряд существенных недостатков:

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

По умолчанию полный путь к исполняемому файлу Bourne Shell — /bin/sh и /sbin/sh. Для пользователей root используется символ # в качестве приглашения командной строки, а для не-root пользователей — символ $.

2: GNU Bourne-Again (bash)

GNU Bourne-Again (известная также как Bash) была разработана для совместимости с оболочкой Bourne. Она включает в себя полезные функции из других шеллов Linux, таких как Korn и C.

В отличие от командной оболочки Bourne, она позволяет автоматически вызывать ранее выполненные команды и редактировать их клавишами со стрелками.

Полный путь к оболочке GNU Bourne-Again — /bin/bash. По умолчанию она использует приглашение bash-VersionNumber# для пользователя root и bash-VersionNumber$ для пользователей без прав root.

Читайте также: 

3: C Shell (csh)

Оболочка C была разработана Биллом Джоем в Калифорнийском университете. Обозначается как csh. Она была создана для реализации полезных функций и синтаксиса языка программирования C.

Кроме того, у нее есть история команд, которой не было в других типах командных оболочек Linux (например, в Bourne). Еще одна отличительная особенность оболочки C — псевдонимы (aliases).

Полный путь к C shell: /bin/csh. По умолчанию она использует приглашение hostname# для пользователя с правами root и hostname% для пользователей без этих привилегий.

4: Korn Shell (ksh)

Была разработана в AT&T Bell Labs Дэвидом Корном как улучшение оболочки Bourne. 

Обозначается как ksh. Командная оболочка Korn по сути является расширением Bourne. Помимо всех функций из Bourne, она предоставляет пользователям новые возможности, среди которых встроенная поддержка арифметических операций и интерактивные функции, как в C shell.

Korn запускает скрипты оболочки Bourne, выполняя операции со строками, массивами и функциями подобно языку программирования C. Она также поддерживает скрипты, написанные для оболочки C. Кроме того, Korn работает быстрее большинства других типов командных оболочек Linux, включая C shell.

Полный путь к оболочке Korn: /bin/ksh. По умолчанию, для пользователя root используется приглашение #, non-root — $.

5: Z Shell (zsh)

Командная оболочка Z, или zsh — это расширение шелла sh с улучшенной кастомизацией. Если вы ищете современную оболочку со множеством функций, Z Shell — это то, что вам нужно.

Читайте также: Установка Z Shell (zsh) на облачный сервер

Особенности Z shell:

  • Создание имен файлов на основе заданных условий
  • Поддержка плагинов и тем
  • Индекс встроенных функций
  • Автовыполнение команд

Заключение

Давайте подведем итоги по типам оболочек, которые мы рассмотрели в этом мануале:

  • Bourne shell (sh): полный путь /bin/sh и /sbin/sh, приглашение командной строки для root пользователя — #, для пользователей без прав root — $
  • GNU Bourne-Again (bash): полный путь /bin/bash, приглашение командной строки для пользователя root — bash-VersionNumber#, без прав root — bash-VersionNumber$
  • C shell (csh): полный путь /bin/csh, для пользователя с правами root приглашение командной строки — #, без этих прав —%
  • Korn shell (ksh): полный путь /bin/ksh, приглашение командной строки для root пользователя #, non-root — $
  • Z shell (zsh): полный путь /bin/zsh, приглашение командной строки для пользователя root — <hostname># , для пользователя без root прав — <hostname>%

Командные оболочки являются одним из самых мощных инструментов, которые доступны пользователю Linux. Без них использовать функционал ядра системы практически невозможно.

Здесь мы рассмотрели наиболее распространенные типы оболочек в Linux, однако существует еще множество других, которые также стоит изучить.

Добавить комментарий