Определение

shell (“оболочка”) — программа, являющаяся самым внешним слоем, через который пользователь взаимодействует с компьютером.

Windows Shell (1995-наши дни)

Например, Windows shell — графическая оболочка, в которой есть, в частности, меню Пуск, рабочий стол и панель задач.

Windows XP

Unix Shell (1970-наши дни)

Unix shell — текстовая программа для операционной системы Unix и подобных ей, предназначенная для запуска других программ. Unix shell мог бы работать и через телетайп.

Где найти Unix Shell?

Unix shell можно найти на любой популярной операционной системе:

  • Linux — Unix-подобная система, там есть Unix shell.
  • MacOS — это наследник Unix, соотв. достаточно открыть терминал.
  • Windows, начиная с 10, предоставляет Unix shell через Windows Subsystem for Linux (WSL).

Зачем знать Unix Shell

Unix shell полезно знать в следующих случаях:

  • Вам нужно работать с Linux. Он есть повсюду: в микроэлектронике, в роутерах, на почти всех веб-серверах. В Linux редко можно обойтись без командной строки.
  • Вам нужно делать что-то экзотическое на MacOS.
  • Для автоматизации: во многих случаях Unix shell удобнее какого-нибудь Python.

Unix Shell vs Windows Shell (и др. граф. оболочки)

Графических оболочек для Windows довольно мало: список альтернативных оболочек для Windows.

Для Unix даже популярных реализаций shell довольно много (по убыванию популярности):

  • bash
  • zsh
  • dash
  • fish
  • ksh

У них всех разные языки и разное поведение.

Лучше рассматривать не какой-то конкретный shell, а стандарт POSIX, который задаёт, какими свойствами должен обладать каждый корректный shell на Unix.

Ссылка на сам стандарт. Он небольшой, имеет смысл в какой-то момент пролистать его весь: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html

См. также секцию POSIX Shell.

Все перечисленные shell-ы, кроме fish, являются более-менее POSIX-совместимыми.

Пример взаимодействия с Unix Shell

prompt настраивается, поэтому у всех выглядит по-разному;

$ и # — это значения по умолчанию.