问题描述
使用 printenv
命令在脚本中执行会出现 execv failed: Exec format error
的错误日志。该问题发生在 TWRP (Team Win Recovery Project) 恢复模式下,通过终端模拟器执行 printenv
命令时功能正常。
测试使用如下的 Bash 脚本:
#!/sbin/sh
printenv | grep sdcard >/tmp/tong.txt
在恢复日志中可以查看下面的错误:
run_program: execv failed: Exec format error
run_program: child exited with status 1
解决方案
方案1 – 更换为 env 命令
根据最佳回答者提供的信息,发现 printenv
命令在 shell 脚本中执行时无效。改用其他替代方法如 env
命令来代替,并能够正确运行。
1. 重写您的脚本如下所示:
#!/sbin/sh
env >/tmp/tong.txt
通过这种方式,可以确保该命令在 TWRP 恢复模式下有效执行。这是因为 env
命令通常比 printenv
具有更高的兼容性。
方案2 – 确认环境变量配置(可选)
如果问题依旧存在,建议检查并确认恢复模式的 shell 环境是否已经正确配置和初始化。
1. 如果该脚本运行在特定版本或定制版 TWRP 下面,请查阅其官方文档以确保没有缺失任何关键的环境设置。
2. 手动执行部分关键命令,例如:
sh
env | grep PATH >/tmp/tong.txt
3. 通过对比正常输出与错误行为下的日志结果,进一步验证环境变量的实际配置情况。
参考建议
虽然 env
命令在本文档中成功解决问题,但为了程序兼容性的考虑,使用平台支持的标准命令总是更佳。此外,如果您的脚本依赖于 printenv
的某些特殊行为,在继续开发过程中可以添加额外 debug 检查。
通过上述分析与修改,希望您能够解决遇到的执行问题。务必确保在不同硬件或 TWRP 版本上测试您的 shell 脚本以保证兼容性和正确性表现。
正文完