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

cbjzeqam  于 2023-04-05  发布在  Linux
关注(0)|答案(6)|浏览(227)

我同样的BASH脚本在Fedora/CentOS中工作。
但我正在测试一个Android eee pad transformer.

我有终端访问权限,我写了一个小的测试脚本。但它不工作,我怎么能修复它?我做错了什么?

/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'";
bgibtngc

bgibtngc1#

在Android中,shell位于/system/bin/sh中,而不是像大多数类Unix系统上的/bin/sh。因此,即使您将#!/bin/bash更改为#!/bin/sh,它仍然无法工作。您必须使用#!/system/bin/sh
Android不是GNU/Linux发行版,所以你不能期望所有在GNU/Linux上运行的脚本也能在Android上运行。

dsf9zpds

dsf9zpds2#

当用脚本调用解释器时,它可能会工作吗?

$ bash ./test.sh

我看到,虽然它是指定的#!/bin/bash错误是由sh发布-可能是它做错了.
不间断电源

$ sh ./test.sh
8fq7wneg

8fq7wneg3#

大多数Android设备没有安装bash解释器。如果你真的需要在Linux和Android上运行脚本,你可以尝试使用BusyBox,但这需要root你的设备(并可能使你的保修无效)。即使这样,我不知道ifconfig实用程序是否包含在BusyBox中。
我强烈建议使用Android SDK编写一个应用程序来完成您想要完成的任何任务。

iugsix8n

iugsix8n4#

如前所述,Android操作系统(4.0之前)不包括BASH解释器(只是shell)。虽然BusyBox是一个很好的工具,但我相信它只是一个单一的可执行文件,它结合了常见UNIX实用程序的精简功能版本,但实际上并不包括BASH解释器。
有关BASH解释器的Android编译版本,请参阅此论坛线程:http://forum.xda-developers.com/showthread.php?t=537827

bttbmeg0

bttbmeg05#

您可以安装Busybox,它为您提供了许多实用程序,如awk,file等...和Terminal Emulator
1.创建一个shell文件,第一行为#!/system/bin/sh(shebang)
1.现在,将完成的脚本放在/system/xbin/system/bin下,并从终端模拟器运行它
以下信息摘自本文:HOW TO RUN SHELL SCRIPTS ON ANDROID DEVICES

ippsafx7

ippsafx76#

让bash脚本运行是最小的。问题是如何在不打开一些终端模拟器并输入脚本路径的情况下运行它。唯一的方法是使用TCL/TK:
1-)在https://www.androwish.org/home/home下载并安装AndroWish
2-)从Google Store安装Busybox
编写一个启动器:
launcher.tcl

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

yourscript.sh

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

通过键入以下命令将桌面快捷方式添加到AndroWish终端:borg shortcut add "MyScrypt" file://mnt/sdcard/launcher.tcl

相关问题