Что такое оболочка и терминал
Разбираемся, что происходит, когда вы вводите команду и нажимаете 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, запускает её процессом и показывает вывод.