173

Я запутался с терминологией. В чем разница между оболочкой, консолью и терминалом?

6 ответов6

154

В мире Linux все они могут выглядеть одинаково с точки зрения пользователя на клавиатуре. Различия в том, как они взаимодействуют друг с другом.

Оболочка - это программа, которая фактически обрабатывает команды и возвращает результат. Большинство оболочек также управляют передним и фоновым процессами, историей команд и редактированием командной строки. Эти функции (и многие другие) являются стандартными в bash , самой распространенной оболочке в современных системах Linux.

Терминал относится к программе-оболочке, которая запускает оболочку. Несколько десятилетий назад это было физическое устройство, состоящее из чуть больше, чем монитор и клавиатура. Поскольку системы Unix / Linux добавили более совершенные многопроцессорные и оконные системы, эта концепция терминала была абстрагирована в программное обеспечение. Теперь у вас есть такие программы, как Gnome Terminal, который запускает окно в оконной среде Gnome, которое запускает оболочку, в которую вы можете вводить команды.

Консоль - это особый вид терминала. Исторически консоль представляла собой единственную клавиатуру и монитор, подключенные к выделенному последовательному консольному порту на компьютере, который используется для прямой связи на низком уровне с операционной системой. Современные Linux-системы предоставляют виртуальные консоли. Доступ к ним осуществляется через комбинации клавиш (например, Alt+F1 или Ctrl+Alt+F1 ; функциональные клавиши нумеруют разные консоли), которые обрабатываются на низких уровнях операционной системы Linux - это означает, что не существует специального сервиса, который необходимо установлен и настроен для запуска. Взаимодействие с консолью также осуществляется с помощью программы оболочки.

12

Оболочка - это программа, которая выдает подсказку и ждет от вас ввода команд. Он выполняет их, а затем печатает другое приглашение. Так, как CMD в Windows или Bash в Unix. Он может работать в терминале или на консоли.

Консоль изначально была физической вещью, панелью управления. В вычислительном отношении это обычно означает отображение, которое вы видите перед запуском GUI или после его завершения; иногда вы можете переключиться на отображение вместо GUI. Это место, где операционная система печатает сообщения об ошибках. На многопользовательском компьютере это дисплей, который фактически подключен к компьютеру. Просто чтобы сбить вас с толку, в Windows это также может означать окно с командной оболочкой, то есть терминал.

Терминал также был изначально аппаратным, использовался для связи с компьютером. В настоящее время это обычно относится к окну с командной строкой (оболочкой), которое может появиться в окне графического интерфейса или вместо графического интерфейса.

1

Подумайте о другом контексте, это развитие.
Даже если у вас нет очень глубоких знаний о разработке, вы, вероятно, знаете основы, а именно: вы редактируете программу, отправляете ее компилятору или интерпретатору, который создает скомпилированное приложение.
Консоль похожа на редактор вашей программы; это помогает вам в написании, но на самом деле ничего не выполняет: когда вы закончите, вы отправляете его компилятору для этого.

Вы можете использовать предпочитаемый вами редактор, vim, gedit, emacs, notepad++, Netbeans, eclise и т.д., Но в конце концов это просто разные инструменты: если вы напишите одну и ту же программу, результат будет одинаковым.
В этой метафоре оболочка является компилятором. Команды, которые вводятся в терминал, отправляются в оболочку, которая их интерпретирует и выполняет немедленно.
Таким образом, хотя терминалы являются лишь интерфейсом для оболочки, оболочка содержит реальный язык, как это происходит для компилятора.

Очевидно, что терминал не является в точности текстовым редактором, в основном потому, что он не создает файл, а отправляет текст в базовую оболочку и извлекает из него выходные данные.

И оболочка не является компилятором, фактически она интерпретирует вашу команду и выполняет ее немедленно, вместо того, чтобы создавать исполняемый файл.

Даже несмотря на эту большую разницу, я нахожу эту метафору, которая очень помогает в понимании этой идеи.

0

Терминал - это текстовый интерфейс (возможно, для оболочки)

Разницу между консолью и оболочкой я не понимаю, но могу сказать, чем терминал отличается от оболочки.

Терминал является (согласно Википедии) «последовательным компьютерным интерфейсом для ввода и отображения текста. Информация представлена в виде массива предварительно выбранных сформированных символов ».

Вы можете использовать терминал для взаимодействия с оболочкой, но вы также можете использовать его для взаимодействия с текстовым графическим интерфейсом, иногда называемым пользовательским интерфейсом терминала. Например:

  • Vim имеет элементы графического интерфейса, включая номера строк и именные вкладки
  • Nano имеет элементы графического интерфейса, включая меню справки команд
  • Tmux имеет элементы графического интерфейса, включая строку состояния и разделительные линии между панелями
  • Minicom имеет элементы графического интерфейса, включая меню и строку состояния

В каждом случае элементы графического интерфейса "рисуются" текстом, а не пикселями.

0

Там действительно нет большой разницы. В далеком прошлом, когда "оболочкой" была программа, "терминалом" была оболочка внешнего интерфейса этой программы, а "консолью" было физическое соединение с компьютером (клавиатура / экран).

Существует разница в зависимости от того, какую ОС вы используете. "Стандартной" оболочкой является BASH, которая обычно доступна во всех версиях Linux / Unix. Windows использует совершенно другую оболочку.

0

Для начинающих начинающих

Для более подробного описания: https://askubuntu.com/a/506628/130518

  • терминал = среда ввода / вывода текста
  • консоль = физический терминал
  • shell = интерпретатор командной строки

Я опишу наиболее нормальный вариант использования этого в следующем тексте.

Терминал использует оболочку. Оболочка может работать без терминала.

Относиться к предметам быта:

  • Терминал -> ТВ экран в вашем доме
  • Shell -> Программа, которая работает на экране телевизора

Другой способ взглянуть на это: ваши уши (вход) и рот (выход) являются терминалами для звука. Ваш мозг интерпретирует эти звуки, используя особую оболочку (обработку).

Терминал для нас, людей, поэтому мы можем читать и писать в / из оболочки. Оболочки могут выполняться в фоновых процессах, которые не требуют взаимодействия с человеком, например, задание cron, и, следовательно, не требуют терминала.

Несколько примеров существующих терминалов:

  • Командная строка
  • Guake
  • гном-терминал
  • терминатор

Несколько примеров существующих оболочек:

  • удар
  • Sh (Борн оболочки)
  • PowerShell [windows]
  • Zsh (Z оболочка)

Я только написал, как эти два обычно работают, есть другие способы, которыми они работают, но это для более опытного пользователя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .