Выбор ответа Middle Процессы и сигналы обновлено

Почему cd встроен в shell

Вопрос

Почему cd реализован как встроенная команда shell, а не отдельная программа /usr/bin/cd?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Программа сменила бы каталог только своему дочернему процессу. Текущий каталог это свойство процесса.

Варианты ответа

  1. Так быстрее: встроенной команде не нужен поиск по PATH
  2. Программа сменила бы каталог только своему дочернему процессуправильный ответ
  3. Смена каталога требует прав root, а у shell они есть
  4. /usr/bin/cd есть, а встроенная нужна для совместимости с sh

Разбор

Текущий каталог это свойство процесса. Внешняя команда запускается через fork и exec в потомке и меняет каталог потомка, после её выхода shell остался бы на месте. Поэтому cd, export, source встроены. Скорость тут вторична, а смена каталога прав root не требует.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.