BusyBox
Magisk整合了功能完整的BusyBox二进制文件(包括对SELinux的完整支持)。执行文件位于/data/adb/magisk/busybox
。Magisk的BusyBox支持运行时可切换的“ASH Standalone Shell Mode(ASH独立Shell模式)”。这种独立模式的意思是,在ashshell的中的BusyBox运行时,无论PATH的值为何,每个命令都将直接使用BusyBox中的应用(子命令)。例如,就像ls,rm,chmod 命令一样。它们将不在使用默认PATH(在Android中,默认为/system/bin/ls,/system/bin/rm,和/system/bin/chmod。),而是直接调用Magisk内部的BusyBox应用(子命令)。
你可以简单理解为在执行命令的时候会先从busybox里面找,找不到的才从环境变量中找。这样可以避免不同系统版本导致的执行问题,因为有了完整的命令集,确保脚本始终在可预测的环境中运行,并且无论运行在哪个Android版本上,始终具有完整的命令集。要强制命令不使用BusyBox,必须使用完整路径调用可执行文件。
在启用了ash的独立模式的情况下,Magisk 中运行的每个单独的shell脚本,都将在内部的BusyBox的shell中执行。对于与第三方开发者来说,所有引导脚本和模块安装脚本都是在Magisk 中运行的。
如果不想在Magisk中使用此“独立模式”,下面有两种办法:
- 将环境变量ASH_STANDALONE设置为1