脚本中的环境变量与 PATH 配置
自动注入的环境变量
当 AxManager 执行 Shell 命令或运行插件脚本时,会自动注入以下环境变量:
| 变量 | 值 | 说明 |
|---|---|---|
| AXERON | true | 标识当前在 AxManager 环境中运行 |
| AXERONVER | 整数 | AxManager 服务器版本,如 10400 |
| BOOTMODE | true | AxManager 中始终为 true |
| MODDIR | 路径 | 当前插件的目录(仅插件脚本) |
| MODPATH | 路径 | 插件安装目标路径(仅 customize.sh) |
| TMPDIR | 路径 | 临时文件目录 |
| ZIPFILE | 路径 | 安装 ZIP 文件(仅 customize.sh) |
| ARCH | 字符串 | CPU 架构:arm / arm64 / x86 / x64 |
| IS64BIT | bool | 是否 64 位架构 |
| API | 整数 | Android API 级别(Android 14 = 34) |
判断运行环境
AxManager、KernelSU、Magisk 三者的环境变量有重叠但也有差异。在脚本中可以用 $AXERON 判断当前是不是在 AxManager 中运行:
# 判断是否在 AxManager 中
if [ "$AXERON" = "true" ]; then
echo "运行在 AxManager 中"
fi
同理,KernelSU 提供 $KSU 变量,Magisk 提供 $MAGISK 变量。一个写得好的模块脚本应该同时兼容这三种环境。
PATH 构成
AxManager 会在执行 shell 命令前修改 PATH,确保:
- BusyBox 的 bin 目录在 PATH 最前面
- 插件的
system/bin目录被加入 PATH - 系统原有 PATH 被保留
这意味着插件如果自带了某个二进制文件放在 system/bin/ 下,脚本中可以直接调用它,不需要写完整路径。
版本号格式
AXERONVER 是一个整数版本号,格式为:主版本号 × 10000 + 次版本号 × 100 + 修订号。
例如版本 v1.4.6 对应的 AXERONVER = 10406。插件的 module.prop 中 axeronPlugin 字段用的就是这个整数。
实用技巧
获取模块目录(除 customize.sh 外的所有插件脚本):
MODDIR=${0%/*}
根据架构选择二进制:
case "$ARCH" in
arm64) BIN="$MODDIR/bin/arm64/binary" ;;
arm) BIN="$MODDIR/bin/arm/binary" ;;
x64) BIN="$MODDIR/bin/x64/binary" ;;
x86) BIN="$MODDIR/bin/x86/binary" ;;
esac
根据 Android 版本判断:
if [ "$API" -ge 30 ]; then
# Android 11+ 的逻辑
else
# 旧版本的逻辑
fi