Termux说“'错误的口译员:没有这样的文件或目录”

时间:2019-08-19 16:40:31

标签: termux

我有问题,希望有人可以帮助我。我目前正在尝试为Termux或Termux:Task编写脚本。我的脚本当前如下所示:

  

!/ data / data / com.termux / files / usr / bin / bash cd /./sdcard/www/public/ wp帖子列表睡眠5

每次加载脚本时,都会收到以下错误消息:

/data/data/com.termux/files/usr/bin/wp:/ usr / bin / env:错误的解释器:没有这样的文件或目录。

很久以来,我一直在寻找解决问题的方法,不幸的是没有成功。

我正在使用Termux的扩展名“ WordPress CLI”。当我启动termux并分别输入命令时,一切正常。但是,一旦我将命令写入sh脚本并启动,它就不再起作用。 :(

有人可以帮助我吗?

非常感谢

3 个答案:

答案 0 :(得分:0)

这是一个简单的错误,您可以通过替换!/data/data/com.termux/files/usr/bin/bash来解决。使用#!/data/data/com.termux/files/usr/bin/bash 请告诉您是否再次出错

答案 1 :(得分:0)

在shebang行中尝试使用#!/usr/bin/env bash

  

Termux-exec允许您使用shebang来执行传统Unix文件结构的脚本。因此,像#!/ bin / sh和#!/ usr / bin / env python这样的shebangs应该能够在没有termux-fix-shebang的情况下运行。

来自https://wiki.termux.com/wiki/Termux-exec

答案 2 :(得分:0)

根据doc

<块引用>

为什么我总是收到“/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 行。
  • 使用包 proot 中的 termux-chroot 设置一个 chroot 环境,模仿 Termux 中的普通 Linux 文件系统。

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

在我的测试中,the first methodtermux-exec 仅在我在主脚本中添加正确的shebang(不需要子脚本的子或子脚本)并运行命令 export LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermux-exec.so 时才有效。

对于这个问题的问题,即使脚本/usr/bin/env的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)在脚本中使用包含shebang #!/usr/bin/env wp,也应该将其修改为#!/data/data/com.termux/files/usr/bin/env wp。第一种方法的 termux-exec 也应该解决这个特殊情况(主脚本中已经有正确的 shebang)。