Судя по вашим комментариям, вы не совсем понимаете, что такое оболочка . Ядро отвечает за управление системой. Это часть, которая на самом деле загружает и запускает программы, получает доступ к файлам, выделяет память и т. Д. Но ядро не имеет пользовательского интерфейса; вы можете общаться только с ним, используя другую программу в качестве посредника.
Оболочка - это программа, которая печатает приглашение, читает строку ввода от вас, а затем интерпретирует ее как одну или несколько команд для управления файлами или запуска других программ. До изобретения графического интерфейса оболочка была основным пользовательским интерфейсом ОС. В MS-DOS была вызвана оболочка, command.com
и мало кто когда-либо пытался использовать другую. Однако в Unix уже давно существует несколько оболочек , из которых пользователи могут выбирать.
Их можно разделить на 3 типа. Bourne-совместимые оболочки используют синтаксис, полученный из оригинальной оболочки Bourne . C оболочка использует синтаксис из исходной оболочки C . Кроме того, существуют нетрадиционные оболочки, которые изобретают свой собственный синтаксис или заимствуют один из некоторых языков программирования и, как правило, гораздо менее популярны, чем первые два типа.
Встроенная команда - это просто команда, которую оболочка выполняет сама, вместо того, чтобы интерпретировать ее как запрос на загрузку и запуск какой-либо другой программы. Это имеет два основных эффекта. Во-первых, обычно это быстрее, потому что загрузка и запуск программы требуют времени. Конечно, чем дольше длится команда, тем меньше время загрузки по сравнению с общим временем выполнения (поскольку время загрузки довольно постоянное).
Во-вторых, встроенная команда может влиять на внутреннее состояние оболочки. Вот почему такие команды cd
должны быть встроенными, потому что внешняя программа не может изменить текущий каталог оболочки. Другие команды, например echo
, могут быть встроены для эффективности, но нет внутренней причины, по которой они не могут быть внешними командами.
Какие команды встроены, зависит от используемой вами оболочки. Вам придется ознакомиться с его документацией для получения списка (например, bash
встроенные команды перечислены в главе 4 его руководства ). Команда type
может сказать вам, является ли команда встроенной (если ваша оболочка совместима с POSIX), потому что POSIX требует, чтобы type
она была встроенной. Если which
он не встроен в вашу оболочку, то он, вероятно, не будет знать о встроенных программах вашей оболочки, а будет просто искать внешние программы.