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