Shell как интерактивный командный интерпретатор, способен храненить и использовать историю сеанса, редактировать командную строку.

Основные соглашения языка shell:

  • пробел и символ табуляции - синонимы
  • Слово - это лексема, отличная от знака операции
  • Имя - последовательность букв, цифр, символов подчеркивания, начинающаяся с буквы или подчеркивания
  • Параметр - имя, цифра или любой из символов *, @, #, ?, -, $, !.
  • Комментарий - лексема, начинающаяся с символа #, а также вся последующая часть строки.

В shell различают несколько видов команд:

  • Простая команда - последовательность полей с разделителями (обычно пробелами) между ними. Первое поле определяет имя команды, которая будет выполняться; оставшиеся поля, за исключением присваиваемых параметрам и перенаправления ввода/вывода передаются команде в качестве аргументов. Имя команды передается как аргумент 0. Значение простой команды - ее код завершения.
  • Команда - это либо простая команда, либо одна из управляющих конструкций (см. далее). Кодом завершения команды является код завершения последней выполненной простой команды.
  • Конвейер
  • Список - последовательность из одного или нескольких разделенных символами ;, &, && или || конвейеров, она может заканчиваться символами ; или & . Из четырех указанных операций ; и & имеют равные приоритеты, меньшие, чем у && и ||. Приоритеты последних также равны между собой. Символ ; означает, что конвейеры будут выполняться последовательно, а & - параллельно (т. е. shell не ожидает завершения конвейера ). Операция && ( || ) означает, что список, следующий за ней, будет выполняться лишь в том случае, если код завершения предыдущего конвейера нулевой (ненулевой). В списке в качестве разделителя конвейеров вместо символа ; можно использовать символ перевода строки.
  • Командная строка - строка текста на языке shell.
  • Shell-процедура - файл, содержащий программу на языке shell.

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