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

Терминал и оболочка

Терминал и оболочка — не одно и то же, хотя в разговоре их почти всегда смешивают. Разница короткая:

  • терминал — устройство ввода-вывода: принимает нажатия, показывает текст;
  • оболочка (shell) — программа, которая читает строки, понимает их и запускает другие программы.

Оболочка ничего не показывает на экране напрямую: она пишет в терминал. Терминал ничего не понимает в командах: он передаёт нажатия оболочке. Одна без другой работать может — обе без терминала тоже.

Кто здесь кто

Терминал Оболочка
Что это Устройство или эмулятор Обычная программа
Что делает Ввод и вывод Читает команды, запускает программы, следит за заданиями
Примеры gnome-terminal, konsole, xterm, tmux bash, zsh, fish, sh
Где живёт /dev/pts/0, /dev/tty1 /bin/bash — файл на диске
Знает ли о командах Нет Да

Оболочка — такая же программа, как ls или vim. Она отличается не природой, а работой: читает строку, разбирает её на слова, подставляет подстановки и запускает то, что вы попросили.

Как увидеть разницу своими глазами

# это терминал — устройство
$ tty
/dev/pts/0

# это оболочка — программа, прямо сейчас
$ echo "$0"
/bin/bash
$ ps -o comm= -p $$
bash

# полный путь оболочки для входа в систему (не обязательно текущей)
$ echo "$SHELL"
/bin/bash

А так видно, что оболочке терминал не обязателен — она отлично работает и без него:

$ bash -c 'echo привет из оболочки без терминала'
привет из оболочки без терминала

И наоборот: терминал не обязан запускать оболочку. Если программа запущена как командная оболочка для входа, терминал будет отдавать нажатия ей, а не bash.

Почему их путают

Три причины, и все понятные:

  1. Оболочка стартует автоматически. Открывая окно, вы обычно видите уже готовое приглашение: терминал запустил оболочку, и границы между ними не видно.
  2. Одно окно, одно название. В быту «консоль», «терминал», «командная строка» — это «то чёрное окно», внутри которого всё и происходит.
  3. Настройки переплетены. Цвета и шрифт задаёт терминал, PATH и приглашение — оболочка, а ищут и то и другое в одном месте настроек.

Есть и четвёртая, техническая: «консоль» в документации означает конкретную вещь — физический терминал машины (tty1), а в разговоре — что угодно. Из-за этого фраза «зайти в консоль» у разных людей означает разные действия.

Практическое следствие

Разделение видно, когда что-то не работает:

  • оболочка не запускается, а приглашение есть: chsh -s /bin/bash, проверить оболочку в /etc/passwd;
  • терминал не отвечает (не видно ввода, ерунда на экране): помогает reset или stty sane, потому что сбились настройки терминала, а оболочка тут ни при чём;
  • скрипт ведёт себя не так, как в окне: у него нет терминала, и оболочка работает в неинтерактивном режиме — это уже другой разговор.

Отсюда и полезная привычка: когда что-то «не работает в консоли», первым делом понять, что именно сломалось — терминал (вывод и ввод), оболочка (разбор строки) или сама запущенная программа.

Источники

  • man 1 bash — что такое оболочка, её режимы (интерактивный и нет) и запуск команд.
  • man 4 tty, man 4 pts — терминал и псевдотерминал как устройства.
  • man 5 passwd, man 1 chsh — откуда система берёт оболочку для пользователя.
  • man 1 stty, man 1 reset — настройки терминала и восстановление после сбоя вывода.
  • Выводы tty, echo $0, ps -o comm= -p $$ — с рабочей системы (проверено 19.10.2026).

Что ещё не проверено

  • Названия терминалов и оболочек в таблице — примеры, а не полный список: zsh, fish, dash, ksh встречаются так же часто.
  • Про reset и stty sane сказано по документации: намеренно ломать вывод терминала, чтобы проверить восстановление, я не стал — на рабочей машине это лишний риск.
Оценка статьи 0

Комментарии

Пока комментариев нет.