Кома́ндная оболо́чка Unix
(
англ.
Unix shell
, часто просто «шелл» или «sh») —
командный интерпретатор
, используемый в
операционных системах
семейства
Unix
, в котором пользователь может либо давать команды операционной системе по отдельности, либо запускать скрипты, состоящие из списка команд. В первую очередь, под shell понимаются
POSIX
-
совместимые
оболочки, восходящие к
Bourne shell
(шелл Борна), появившемуся в
Unix Version
7.
Содержание
Разновидности
sh
— оригинальный шелл Борна;
dash
,
bash
,
zsh
— другие современные клоны Bourne shell (расположены по возрастанию функциональности).
ksh
(
K
orn
Sh
ell) —
клон
шелла Борна, разработанный
Дэвидом Корном
из
AT&T
Labs. Синтаксис совместим, функциональность интерактивности увеличена
.
(
p
ublic
d
omain
ksh
) — открытая (почти целиком является
общественным достоянием
) реализация ksh.
bash
(
b
ourne
a
gain
sh
ell) (эмуляция совместимости POSIX
) расширенная Борном свободная (разработанная в рамках
проекта GNU
) оболочка ash, сходная с pdksh. Стандартная оболочка в
Linux
.
C shell — (несовместима с POSIX shell) оболочка, с синтаксисом на основе
Си
, созданная
Университетом Беркли
в рамках проекта по реализации
BSD Unix
.
csh
(
C
-
Sh
ell) — оболочка из состава дистрибутива
BSD
, имеет
Си
-образный синтаксис и не является
POSIX
-совместимой. Впервые введены возможности
управления заданиями
и произведены другие улучшения.
tcsh
(
csh
) — реализация csh с интерактивными возможностями, не уступающими bash
. Удобна для интерактивной работы. Совместима с csh.
xsh
(
X
iki
sh
ell, от e
x
ecutable w
iki
) — новая командная оболочка, совмещающая командный и графический режимы работы
fish
(
F
riendly
I
nteractive
SH
ell) — (несовместима с POSIX) командная оболочка, отличительными особенностями которой являются продвинутое автодополнение и подсветка синтаксиса "из коробки", а также упрощённый язык скриптов
Программирование
sh
является удобным и часто используемым
интерпретируемым
языком программирования
. Он содержит стандартные конструкции для
циклов
,
ветвления
, объявления
функций
и т. п.
Данный язык часто используется в
UNIX
-подобных системах при создании различных сценариев (
скриптов
) работы, в частности, сценариев автоматического конфигурирования
исходных кодов
программ
перед их
компиляцией
. Отличительная особенность языка sh — многие операции, которые в традиционных языках программирования являются встроенными, выполняются с помощью вызова
. Так, например:
expr
используется для вычисления арифметических выражений;
test
используется для сравнения чисел и строк, а также для определения наличия или атрибутов файлов;