【问题标题】:Unable to execute a shell script in android shell无法在 android shell 中执行 shell 脚本
【发布时间】:2017-03-27 19:55:01
【问题描述】:

我正在尝试从 android shell 调整 shell 脚本。 请看下面的输出。

root@user:/data # ./run_script.sh
/system/bin/sh: ./run_script.sh: No such file or directory

root@user:/data # ls -l run_script.sh
-rwxrwxrwx root     root         5861 2016-11-14 07:31 run_script.sh

为什么说“没有这样的文件或目录”这个错误很奇怪,因为文件实际上存在。

我也尝试将相同的 shell 脚本复制到 /system 分区。结果是一样的。我从 mount 命令验证了两个分区都没有挂载noexec 标志。

我可以使用 sh run_script 让它工作,但我想通过直接执行来让它工作。

【问题讨论】:

  • 文件是否具有所需的权限? (执行)
  • 是的 777 是权限。在代码 sn -p i 中显示了权限
  • 哦,对了,对不起,我错过了

标签: android linux bash shell


【解决方案1】:

文件格式原因 也许您在 Windows 中创建文件,然后将其推送到手机。 cat 命令,看不到。 用vi,我们可以看到

!/bin/sh^M

ps^M

【讨论】:

    【解决方案2】:

    这通常发生在 shebang 不正确时。检查脚本开头是否有“#!...”并将其删除或更正

    【讨论】:

    • 我有#!/bin/sh 我试着把它改成#!/bin/bash.. 两种方式结果都是一样的
    • 你必须删除它或输入:“#!/system/bin/sh”(无引号)
    • 非常感谢。它起作用了..我还有一个查询..我的脚本很大。在执行过程中,我看到如下错误“./run_script: //: can't execute: Is a directory”错误。知道为什么我们会看到这个
    • 看起来它正在尝试执行目录,您可能希望将其运行为 "sh -x run_script.sh" : "-x xtrace 将每个命令写入标准错误(前面有一个'+')在执行之前。对调试很有用。他会在“调试”模式下打印出来,看看到底发生了什么。
    • 非常感谢 rift85。你为我节省了很多时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    相关资源
    最近更新 更多