如何在我的 Android 中运行 BASH 脚本?

问题描述 投票:0回答:7

我的相同 BASH 脚本正在 Fedora/CentOS 中运行。

但我正在测试一个

Android eee pad transformer
enter image description here

我有终端访问权限并编写了一个小测试脚本。但它不起作用,我该如何修复它?我做错了什么?

/data/data/berserker.android.apps.sshdroid/home $ cat test.sh 
#!/bin/bash
var=`ifconfig -a`;
echo $var;

/data/data/berserker.android.apps.sshdroid/home $ chmod +x test.sh 
/data/data/berserker.android.apps.sshdroid/home $ ./test.sh 
sh: ./test.sh: not found
/data/data/berserker.android.apps.sshdroid/home $ uname -a
Linux localhost 2.6.36.3-00004-g069b8b5 #1 SMP PREEMPT Wed May 11 22:14:22 CST 2011 armv7l GNU/Linux

/data/data/berserker.android.apps.sshdroid/home $ bash ./test.sh 
sh: bash: Permission denied

/data/data/berserker.android.apps.sshdroid/home $ ls -l /bin/bash
ls: /bin/bash: No such file or directory

/data/data/berserker.android.apps.sshdroid/home $ find / -name "bash"
find: /config: Permission denied
lots more.......
find: /proc/595/task/598/fd: Permission denied
......
find: /data: Permission denied
find: /root: Permission denied

跟进:

这是我现在可以使用的脚本:

#!/bin/sh
echo "hello wassup, run me simply as './test.sh'";

or

#!/bin/bash
echo "hello wassup, run me using 'sh ./test.sh'";
android linux bash fedora bash4
7个回答
32
投票

在 Android 中,shell 位于

/system/bin/sh
,而不是像大多数类 Unix 系统上的
/bin/sh
。所以即使你把
#!/bin/bash
改成
#!/bin/sh
它仍然不起作用。你必须使用
#!/system/bin/sh

Android 不是 GNU/Linux 发行版,因此您不能指望在 GNU/Linux 上运行的所有脚本也能在 Android 上运行。


11
投票

用脚本调用解释器时可能会起作用吗?

$ bash ./test.sh

我看到,虽然指定了

#!/bin/bash
错误是由
sh
发布的 - 可能是错误的。

UPD

$ sh ./test.sh

6
投票

大多数 Android 设备没有安装 bash 解释器。如果您确实需要在 Linux 和 Android 上运行脚本,您可以尝试使用 BusyBox 但这将需要您的设备 root(并可能使您的保修失效)。尽管如此,我还是不知道 BusyBox 中是否包含

ifconfig
实用程序。

我强烈建议使用 Android SDK 编写一个应用程序来完成您想要完成的任何事情。


3
投票

如上所述,Android 操作系统(4.0 及之前版本)不包含 BASH 解释器(仅 shell)。虽然 BusyBox 是一个很棒的工具,但我相信它只是一个单一的可执行文件,结合了常见 UNIX 实用程序的精简功能版本,但实际上并不包含 BASH 解释器。

有关 BASH 解释器的 Android 编译版本,请参阅此论坛主题: http://forum.xda-developers.com/showthread.php?t=537827


1
投票

您可以安装 Busybox,它为您提供了许多实用程序,例如 awk、file 等...以及 Terminal Emulator

  1. 创建一个 shell 文件,以
    #!/system/bin/sh
    作为第一行 (shebang)
  2. 现在将完成的脚本放在
    /system/xbin
    /system/bin
    下并从终端模拟器运行它

该信息摘自本文:如何在 ANDROID 设备上运行 shell 脚本


0
投票

运行 bash 脚本是最重要的。问题是如何在不打开终端模拟器并输入脚本路径的情况下执行此操作。唯一的方法是使用 TCL/TK:

1-) 在 https://www.androwish.org/home/home
下载并安装 AndroWish 2-) 从 Google 商店安装 Busybox

编写启动器:

启动器.tcl

#!/usr/bin/wish
exec sh /storage/sdcard0/yourscript.sh
exit 0

你的脚本.sh

#!/system/bin/sh
[...]

通过键入以下内容将桌面快捷方式添加到 AndroWish 终端:

borg shortcut add "MyScript" file://mnt/sdcard/launcher.tcl


0
投票
可以使用

Termux。 Termux 是适用于 Android 设备的终端模拟器和 Linux 环境。

© www.soinside.com 2019 - 2024. All rights reserved.