Script.sh 在 TWRP 恢复模式下执行时出现 execv failed: Exec format error 错误的解决方法

18次阅读
没有评论

问题描述

使用 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 脚本以保证兼容性和正确性表现。

正文完