Выбор ответа Middle Процессы и сигналы обновлено
Почему cd встроен в shell
Вопрос
Почему cd реализован как встроенная команда shell, а не отдельная программа /usr/bin/cd?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Программа сменила бы каталог только своему дочернему процессу. Текущий каталог это свойство процесса.
Варианты ответа
- Так быстрее: встроенной команде не нужен поиск по PATH
- Программа сменила бы каталог только своему дочернему процессуправильный ответ
- Смена каталога требует прав root, а у shell они есть
/usr/bin/cdесть, а встроенная нужна для совместимости с sh
Разбор
Текущий каталог это свойство процесса. Внешняя команда запускается через fork и exec в потомке и меняет каталог потомка, после её выхода shell остался бы на месте. Поэтому cd, export, source встроены. Скорость тут вторична, а смена каталога прав root не требует.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.