it-swarm-ru.tech

В чем разница между Shell, консолью и терминалом?

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

181
claws

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

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

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

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

161
Doug Harris

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

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

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

14
Peter Westlake

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

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

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

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

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

1
AgostinoX

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

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

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

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

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

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

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

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

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

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

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

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

  • Bash
  • ш (Борн Шелл)
  • PowerShell [windows]
  • zsh (Z Shell)

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

1
Karl Morrison

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

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

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

Вы можете использовать терминал для взаимодействия с Shell, но вы также можете использовать его для взаимодействия с текстовым GUI , иногда называемым Terminal User Interface . Например:

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

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

0
Nathan Long

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

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

0
Josh K