Что такое оболочка и терминал

Разбираемся, что происходит, когда вы вводите команду и нажимаете Enter.

Оболочка (shell) — это программа, которая читает команды пользователя, запускает другие программы и возвращает их результат.

Терминал, оболочка и Bash — это разные вещи

Новички часто путают три понятия. Терминал — это окно, в котором вы печатаете текст и видите ответ (например, приложение Terminal в macOS или GNOME Terminal в Linux). Оболочка — это программа внутри терминала, которая понимает ваши команды. Bash (Bourne Again SHell) — конкретная популярная оболочка, наследник классического sh.

Можно думать так: терминал — это телефонная трубка, оболочка — собеседник на том конце, а Bash — конкретный человек, с которым вы говорите. Есть и другие собеседники: zsh, fish, dash. В этом курсе мы говорим именно с Bash.

Зачем это программисту

Почти весь серверный мир работает на Linux, а доступ к серверу вы получаете через терминал по SSH. Деплой, логи, бэкапы, перезапуск сервисов, отладка — всё это команды в оболочке. Тот, кто умеет писать скрипты, экономит часы ручной работы: один скрипт делает за секунду то, что мышкой заняло бы полчаса.

Из чего состоит команда

Любая команда в Bash — это слова, разделённые пробелами. Первое слово — имя программы, остальные — её опции и аргументы.

ls -l -a /home/user

Здесь ls — программа (список файлов), -l и -a — опции (длинный формат и показ скрытых файлов), /home/user — аргумент (какую папку показать). Короткие опции часто можно склеивать: ls -la то же самое.

echo Привет, мир
pwd
whoami

Вывод:

Привет, мир
/home/user
user

Команда echo печатает текст, pwd показывает текущую папку (print working directory), whoami — ваше имя пользователя.

Как работает под капотом

Когда вы нажимаете Enter, Bash разбирает строку на слова, подставляет переменные и шаблоны, ищет программу по списку папок из переменной PATH, запускает её как отдельный процесс, ждёт завершения и показывает её вывод. После этого Bash печатает приглашение (приглашение командной строки, prompt — обычно $) и ждёт следующую команду.

Вы печатаете команду
        │
        ▼
   Bash разбирает строку на слова
        │
        ▼
   Ищет программу в PATH ──▶ запускает процесс
        │                          │
        ▼                          ▼
   Ждёт завершения          Программа печатает вывод
        │
        ▼
   Печатает приглашение $ снова

Частые ошибки

  • Лишние пробелы. Bash разделяет слова по пробелам, поэтому echo привет и echo привет дадут разный отступ, а в присваиваниях пробелы вообще запрещены (об этом в следующем разделе).
  • Команда не найдена. Сообщение command not found значит, что программы нет в PATH — либо опечатка, либо она не установлена.
  • Путать терминал и Bash. Сменить тему окна — это про терминал, а синтаксис команд — про оболочку.

Итог

  • Терминал — окно, оболочка — программа в нём, Bash — конкретная оболочка.
  • Команда = имя программы + опции + аргументы, разделённые пробелами.
  • Bash ищет программу в PATH, запускает её процессом и показывает вывод.
Проверьте себя
1. Что такое Bash?
AОкно, в котором вводят команды
BКомандная оболочка, наследник sh
CОперационная система
DФайловый менеджер
2. В команде ls -la /tmp чем является /tmp?
AОпцией
BИменем программы
CАргументом
DПеременной
3. Где Bash ищет программу, имя которой вы ввели?
AВ текущей папке
BВ списке папок из переменной PATH
CВ оперативной памяти
DВ файле .bashrc