Определение
shell (“оболочка”) — программа, являющаяся самым внешним слоем, через который пользователь взаимодействует с компьютером.
Windows Shell (1995-наши дни)
Например, Windows shell — графическая оболочка, в которой есть, в частности, меню Пуск, рабочий стол и панель задач.
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 настраивается, поэтому у всех выглядит по-разному;
$ и # — это значения по умолчанию.