Я запутался с терминологией. В чем разница между оболочкой, консолью и терминалом?
6 ответов
В мире Linux все они могут выглядеть одинаково с точки зрения пользователя на клавиатуре. Различия в том, как они взаимодействуют друг с другом.
Оболочка - это программа, которая фактически обрабатывает команды и возвращает результат. Большинство оболочек также управляют передним и фоновым процессами, историей команд и редактированием командной строки. Эти функции (и многие другие) являются стандартными в bash
, самой распространенной оболочке в современных системах Linux.
Терминал относится к программе-оболочке, которая запускает оболочку. Несколько десятилетий назад это было физическое устройство, состоящее из чуть больше, чем монитор и клавиатура. Поскольку системы Unix / Linux добавили более совершенные многопроцессорные и оконные системы, эта концепция терминала была абстрагирована в программное обеспечение. Теперь у вас есть такие программы, как Gnome Terminal, который запускает окно в оконной среде Gnome, которое запускает оболочку, в которую вы можете вводить команды.
Консоль - это особый вид терминала. Исторически консоль представляла собой единственную клавиатуру и монитор, подключенные к выделенному последовательному консольному порту на компьютере, который используется для прямой связи на низком уровне с операционной системой. Современные Linux-системы предоставляют виртуальные консоли. Доступ к ним осуществляется через комбинации клавиш (например, Alt+F1 или Ctrl+Alt+F1 ; функциональные клавиши нумеруют разные консоли), которые обрабатываются на низких уровнях операционной системы Linux - это означает, что не существует специального сервиса, который необходимо установлен и настроен для запуска. Взаимодействие с консолью также осуществляется с помощью программы оболочки.
Оболочка - это программа, которая выдает подсказку и ждет от вас ввода команд. Он выполняет их, а затем печатает другое приглашение. Так, как CMD в Windows или Bash в Unix. Он может работать в терминале или на консоли.
Консоль изначально была физической вещью, панелью управления. В вычислительном отношении это обычно означает отображение, которое вы видите перед запуском GUI или после его завершения; иногда вы можете переключиться на отображение вместо GUI. Это место, где операционная система печатает сообщения об ошибках. На многопользовательском компьютере это дисплей, который фактически подключен к компьютеру. Просто чтобы сбить вас с толку, в Windows это также может означать окно с командной оболочкой, то есть терминал.
Терминал также был изначально аппаратным, использовался для связи с компьютером. В настоящее время это обычно относится к окну с командной строкой (оболочкой), которое может появиться в окне графического интерфейса или вместо графического интерфейса.
Подумайте о другом контексте, это развитие.
Даже если у вас нет очень глубоких знаний о разработке, вы, вероятно, знаете основы, а именно: вы редактируете программу, отправляете ее компилятору или интерпретатору, который создает скомпилированное приложение.
Консоль похожа на редактор вашей программы; это помогает вам в написании, но на самом деле ничего не выполняет: когда вы закончите, вы отправляете его компилятору для этого.
Вы можете использовать предпочитаемый вами редактор, vim, gedit, emacs, notepad++, Netbeans, eclise и т.д., Но в конце концов это просто разные инструменты: если вы напишите одну и ту же программу, результат будет одинаковым.
В этой метафоре оболочка является компилятором. Команды, которые вводятся в терминал, отправляются в оболочку, которая их интерпретирует и выполняет немедленно.
Таким образом, хотя терминалы являются лишь интерфейсом для оболочки, оболочка содержит реальный язык, как это происходит для компилятора.
Очевидно, что терминал не является в точности текстовым редактором, в основном потому, что он не создает файл, а отправляет текст в базовую оболочку и извлекает из него выходные данные.
И оболочка не является компилятором, фактически она интерпретирует вашу команду и выполняет ее немедленно, вместо того, чтобы создавать исполняемый файл.
Даже несмотря на эту большую разницу, я нахожу эту метафору, которая очень помогает в понимании этой идеи.
Терминал - это текстовый интерфейс (возможно, для оболочки)
Разницу между консолью и оболочкой я не понимаю, но могу сказать, чем терминал отличается от оболочки.
Терминал является (согласно Википедии) «последовательным компьютерным интерфейсом для ввода и отображения текста. Информация представлена в виде массива предварительно выбранных сформированных символов ».
Вы можете использовать терминал для взаимодействия с оболочкой, но вы также можете использовать его для взаимодействия с текстовым графическим интерфейсом, иногда называемым пользовательским интерфейсом терминала. Например:
- Vim имеет элементы графического интерфейса, включая номера строк и именные вкладки
- Nano имеет элементы графического интерфейса, включая меню справки команд
- Tmux имеет элементы графического интерфейса, включая строку состояния и разделительные линии между панелями
- Minicom имеет элементы графического интерфейса, включая меню и строку состояния
В каждом случае элементы графического интерфейса "рисуются" текстом, а не пикселями.
Там действительно нет большой разницы. В далеком прошлом, когда "оболочкой" была программа, "терминалом" была оболочка внешнего интерфейса этой программы, а "консолью" было физическое соединение с компьютером (клавиатура / экран).
Существует разница в зависимости от того, какую ОС вы используете. "Стандартной" оболочкой является BASH, которая обычно доступна во всех версиях Linux / Unix. Windows использует совершенно другую оболочку.
Для начинающих начинающих
Для более подробного описания: https://askubuntu.com/a/506628/130518
- терминал = среда ввода / вывода текста
- консоль = физический терминал
- shell = интерпретатор командной строки
Я опишу наиболее нормальный вариант использования этого в следующем тексте.
Терминал использует оболочку. Оболочка может работать без терминала.
Относиться к предметам быта:
- Терминал -> ТВ экран в вашем доме
- Shell -> Программа, которая работает на экране телевизора
Другой способ взглянуть на это: ваши уши (вход) и рот (выход) являются терминалами для звука. Ваш мозг интерпретирует эти звуки, используя особую оболочку (обработку).
Терминал для нас, людей, поэтому мы можем читать и писать в / из оболочки. Оболочки могут выполняться в фоновых процессах, которые не требуют взаимодействия с человеком, например, задание cron, и, следовательно, не требуют терминала.
Несколько примеров существующих терминалов:
- Командная строка
- Guake
- гном-терминал
- терминатор
Несколько примеров существующих оболочек:
- удар
- Sh (Борн оболочки)
- PowerShell [windows]
- Zsh (Z оболочка)
Я только написал, как эти два обычно работают, есть другие способы, которыми они работают, но это для более опытного пользователя.