З ваших коментарів ви, мабуть, розгублені, що саме таке оболонка . Ядро відповідає за управління системою. Це частина, яка фактично завантажує та запускає програми, здійснює доступ до файлів, виділяє пам'ять тощо. Але ядро не має інтерфейсу користувача; Ви можете спілкуватися з нею лише за допомогою іншої програми в якості посередника.
Оболонка - це програма, яка друкує підказку, зчитує з вас рядок введення, а потім інтерпретує її як одну або кілька команд для маніпулювання файлами або запуску інших програм. До винаходу GUI оболонка була основним інтерфейсом користувача ОС. На MS-DOS оболонку викликали, command.com
і мало хто намагався використовувати інший. На Unix, однак, давно було кілька оболонок, з яких користувачі могли вибрати.
Їх можна розділити на 3 типи. Оболонки, сумісні з Борном, використовують синтаксис, отриманий з оригінальної оболонки Борна . C оболонка використовує синтаксис з вихідної оболонки C . Тоді є нетрадиційні оболонки, які вигадують власний синтаксис або запозичують його з якоїсь мови програмування, і, як правило, набагато менш популярні, ніж перші два типи.
Вбудована команда - це просто команда, яку оболонка виконує сама, а не інтерпретувати її як запит на завантаження та запуск якоїсь іншої програми. Це має два основні наслідки. По-перше, це зазвичай швидше, тому що завантаження та запуск програми вимагає часу. Звичайно, чим довше команда займає виконання, тим менший час завантаження порівнюється із загальним часом виконання (оскільки час завантаження досить постійний).
По-друге, вбудована команда може впливати на внутрішній стан оболонки. Ось чому такі команди, як і cd
повинні бути вбудовані, оскільки зовнішня програма не може змінити поточний каталог оболонки. Інші команди, як-от echo
, можуть бути вбудовані для ефективності, але немає внутрішньої причини, що вони не можуть бути зовнішніми командами.
Які команди вбудовані, залежить від оболонки, яку ви використовуєте. Вам доведеться ознайомитись з його документацією для переліку (наприклад, bash
вбудовані команди перелічені у розділі 4 цього посібника ). type
Команда може сказати вам , якщо команда вбудована (якщо оболонка POSIX-сумісна), так як POSIX вимагає , щоб type
бути вбудованим. Якщо which
у вашій оболонці не вбудований, він, ймовірно, не буде знати про вбудовані ваші оболонки, а просто шукатиме зовнішні програми.