我正在寻找一个 *NIX shell,其中大多数基本功能(ls、cat 等)都是在内部完成的,而不是通过 exec 调用外部程序。busybox 使用符号链接的二进制名称回调自身,但它仍然调用 exec,而不仅仅是在内部调用程序。有没有像这样完全独立的 shell?我似乎无法在 Google 上找到任何东西。
先感谢您!
答案1
忙碌箱如果设置了以下选项,则可以配置为直接运行其某些可执行文件(“小程序”)的内部实现:
FEATURE_PREFER_APPLETS=y
(“exec 更喜欢小程序”)FEATURE_SH_STANDALONE=y
(“独立外壳”)FEATURE_SH_NOFORK=y
(“直接运行‘nofork’小程序”)
这些选项默认都是禁用的,因此您需要从源代码构建 busybox 来启用它们。
请注意,许多小程序不支持NOFORK
。
答案2
您可以使用sash
“独立外壳”。
来自 Debian 软件包的描述:
sash
用作 的交互式替代品/bin/sh
,用于/bin/sh
不可用时。它是静态链接的,并包含许多标准实用程序作为内置程序(在提示符下键入“help”以获取参考列表)。如果您sash
在导致系统无法启动之前安装了 ,并且您对系统应该如何工作有所了解,那么您可能能够init=/bin/sash
在启动提示符下使用 来修复系统。
答案3
你可以看看bash-static,的静态链接版本bash
。