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