根据文档:
为什么我不断收到“/bin/sh bad interpreter”错误?
由于在不存在的位置访问脚本解释器而引发此错误。
Termux 在其标准位置没有像 /bin、/sbin、/usr/bin 这样的公共目录。对于某些设备有一个例外,其中 /bin 是指向 /system/bin 的符号链接,但这并没有什么区别。
应仅在此目录中访问解释器:
/data/data/com.termux/files/usr/bin
有三种方法可以解决此问题:
- 使用 pkg install termux-exec 安装 termux-exec。它不会影响当前会话,但重启后无需任何设置即可工作。如果您的 Termux 是最新的,则不需要。如果仍然无法正常工作,请尝试下一个解决方法。
- 使用命令 termux-fix-shebang 修复指定文件的 shebang 行。
- 使用软件包根目录中的 termux-chroot 来设置一个模仿 Termux 中普通 Linux 文件系统的 chroot 环境。
termux-fix-shebang my_script.py
第二种方法对我有用,它将shebang(第一行my_script.py
)从修改#!/usr/bin/env python
为#!/data/data/com.termux/files/usr/bin/env python
。由于/usr/bin/
在 Android 中不存在,这就是它抛出错误的原因/usr/bin/env: bad interpreter: No such file or directory
。另一个解决方案是使用python my_script.py
,既不是 ,my_script.py
也不是./my_script.py
。
在我的测试termux-exec
中,只有当我在主脚本中添加正确的 shebang(不需要子脚本的子或子)并运行 command时,第一种方法export LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermux-exec.so
才有效。
对于这个问题的问题,即使脚本的shebang看起来没问题,/usr/bin/env
中间也会显示错误,这意味着脚本中使用的命令(位于)包含shebang ,也应该修改它。第一种方法也应该解决这个特定情况(主脚本中已经有正确的 shebang)。/data/data/com.termux/files/usr/bin/wp
#!/data/data/com.termux/files/usr/bin/bash
wp
/data/data/com.termux/files/usr/bin/wp
#!/usr/bin/env wp
#!/data/data/com.termux/files/usr/bin/env wp
termux-exec