Существует ли оболочка *NIX, в которую встроены большинство инструментов - нет символьных ссылок, нет внешних исполняющих программ?
Я ищу оболочку *NIX, в которой большая часть основных функций - ls, cat и т. Д. - выполняется внутри и не вызывается через exec для внешних программ. busybox делает что-то с бинарными именами с символическими ссылками, обращаясь к себе, но он по-прежнему вызывает exec, а не просто вызывает программы внутри. Есть ли где-нибудь полностью автономная оболочка? Я не могу показаться Google ничего.
Заранее спасибо!
3 ответа
Busybox может быть настроен для непосредственного запуска внутренних реализаций некоторых из его исполняемых файлов ("апплетов"), если установлены следующие параметры:
FEATURE_PREFER_APPLETS=y
("exec предпочитает апплеты")FEATURE_SH_STANDALONE=y
("Автономная оболочка")FEATURE_SH_NOFORK=y
("Запускайте апплеты" nofork "напрямую")
Все эти параметры по умолчанию отключены, поэтому вам нужно собрать busybox из источника, чтобы включить их.
Обратите внимание, что многие апплеты не поддерживают NOFORK
,
Вы можете взглянуть на bash-static, статически связанную версию bash
,
Вы могли бы использовать sash
"автономная оболочка".
Из описания пакета Debian:
sash
служит интерактивной заменой /bin/sh
, для использования, когда /bin/sh
непригоден Он статически связан и включает в себя множество стандартных утилит в качестве встроенных (введите "help" в приглашении для получения списка ссылок). Если вы установили sash
перед тем, как сделать вашу систему не загружаемой, и у вас есть некоторые знания о том, как ваша система должна работать, вы можете восстановить систему, используя init=/bin/sash
в приглашении загрузки.