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

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

Терминал — устройство, через которое человек разговаривает с машиной текстом: клавиатура, экран и линия связи между ними. Так он и появился — как железо.

Название осталось в системе до сих пор: tty — сокращение от teletypewriter, телетайп. Это была печатающая машинка, соединённая с компьютером: набираешь строку — машина отвечает напечатанной строкой. Потом на смену пришли видеотерминалы с экраном (классический пример — VT100), но принцип не изменился: устройство ввода-вывода на проводе, а вся работа происходит в машине.

Отсюда становится понятно, почему программу в современном окне называют эмулятором терминала: она изображает то железо. gnome-terminal, konsole, xterm — это программы, которые делают вид, что они и есть терминал: принимают нажатия, рисуют текст, отвечают управляющими последовательностями.

Что осталось от железа в системе

Что Смысл
/dev/tty Текущий терминал процесса, чем бы он ни был
/dev/tty1 … /dev/tty6 Виртуальные консоли: тот самый «чёрный экран» на Ctrl+Alt+F3
/dev/pts/0, /dev/pts/1 Псевдотерминалы: пары устройств, которыми пользуются эмуляторы, ssh, tmux
TERM Имя «типа терминала»: какая программа его изображает и что она умеет
terminfo База описаний: что можно этому терминалу отправлять
stty Настройки терминала прямо сейчас: размер, режим, спецсимволы

Проверить, что у вас на самом деле:

$ tty                     # /dev/pts/0 — или «не телетайп», если терминала нет
$ echo "$TERM"            # xterm-256color
$ stty size               # 24 80 — строки и столбцы
$ infocmp -1 | head       # из чего состоит описание вашего терминала

Терминал, псевдотерминал, консоль

Три слова, которые часто говорят как синонимы, а означают разное.

Консоль — терминал, подключённый прямо к машине: то, что видно на Ctrl+Alt+F1…F6. В системе это tty1, tty2 и далее.

Терминал — шире: и консоль, и удалённый терминал, и окно-эмулятор.

Псевдотерминал (pty) — программная пара устройств: одна сторона притворяется терминалом для программы, другая — каналом связи для того, кто её обслуживает (эмулятор, ssh, tmux). Имя устройства — /dev/pts/N. Именно поэтому одна и та же программа в окне терминала и в скрипте ведёт себя по-разному: в окне она получает псевдотерминал, а в скрипте — ничего.

$ man 4 pts          # как устроены псевдотерминалы
$ script -qc 'tty' /dev/null     # выделить псевдотерминал «на лету» и посмотреть
/dev/pts/2

Зачем это знать

Три практические вещи вырастают прямо из истории:

  • Почему в скриптах не работают прогресс-бары и цвета. Многие программы смотрят, есть ли терминал, и без него включают «простой» режим. Отсюда же и TERM=dumb.
  • Почему ssh без -t не даёт интерактивной программы. Псевдотерминал не запрашивается, и программа считает, что её вывод никто не смотрит.
  • Почему в конфигах встречается TERM=vt100. Это совместимость: притвориться древним терминалом, который «умеет мало», проще, чем описать современный.

Источники

  • man 4 tty, man 4 pts — устройства терминалов и псевдотерминалы.
  • man 5 terminfo — описания терминалов и переменная TERM.
  • man 1 tty, man 1 stty, man 1 script, man 3 isatty — проверка и настройка терминала.
  • Выводы команд tty, stty size, script -qc — с рабочей системы (Linux, ядро 6.x; команды проверены 19.10.2026).

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

  • Историческая часть (телетайпы, VT100, когда именно появились псевдотерминалы) написана по общеизвестной истории вычислительной техники; первоисточник я не привожу, потому что под рукой его нет — и не хочу выдавать пересказ за ссылку. Точно проверено здесь другое: как терминал выглядит в системе сегодня — это видно из man-страниц и живых команд.
  • Числа вида 24 80 в stty size — размер вашего окна, а не константа: он меняется вместе с окном.
Оценка статьи 0

Комментарии

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