Как запустить BASH script в моем Android?

В Fedora/CentOS работает тот же самый BASH script.

Но я тестирую один Android eee pad transformer. enter image description here

Где у меня есть доступ к терминалу, и я написал небольшой тест script. Но его не работает, как я могу это исправить? что я делаю неправильно?

/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

Последующие действия:

Теперь это мой script, который работает:

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

or

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

Ответ 1

Может быть, он будет работать при вызове интерпретатора с script?

$ bash ./test.sh

Я видел, что, хотя указано #!/bin/bash, ошибка была отправлена ​​sh - может быть, она ошибается.

UPD

$ sh ./test.sh

Ответ 2

в Android оболочка находится в /system/bin/sh not /bin/sh, как в большинстве Unix-подобных систем. Поэтому, даже если вы измените #!/bin/bash на #!/bin/sh, он все равно не будет работать. вам нужно будет использовать #!/system/bin/sh

Android не является дистрибутивом GNU/Linux, поэтому вы не можете ожидать, что все скрипты, которые работают на GNU/Linux, также будут работать на Android.

Ответ 3

Большинство устройств Android не имеют установленного интерпретатора bash. Если вам действительно нужно запустить script через Linux и Android, вы можете попробовать использовать BusyBox, но для этого потребуется укоренение вашего устройства (и потенциально опорочивая вашу гарантию). Но даже тогда я не знаю, включена ли утилита ifconfig в BusyBox.

Я настоятельно рекомендую использовать Android SDK для написания приложения, чтобы сделать все, что вы пытаетесь выполнить.

Ответ 4

Как уже было сказано, ОС Android (вплоть до 4.0 включительно) не включает в себя интерпретатор BASH (только оболочка). В то время как BusyBox - отличный инструмент, я считаю, что это всего лишь один исполняемый файл, который объединяет выпущенные унифицированные унифицированные утилиты UNIX, но на самом деле не включает в себя интерпретатор BASH.

Для скомпилированной версии интерпретатора BASH для Android см. этот раздел форума: http://forum.xda-developers.com/showthread.php?t=537827

Ответ 5

Вы можете установить Busybox, который предоставляет вам множество утилит, таких как awk, file и т.д., и Терминальный эмулятор.

  • Создайте файл оболочки с #!/system/bin/sh в качестве первой строки (shebang)
  • Теперь разместите завершенный script под /system/xbin или /system/bin и запустите его из эмулятора терминала

Информация является выдержкой из этой статьи: КАК ПРОВЕРИТЬ СКРИПТЫ SHELL НА ANDROID DEVICES

Ответ 6

Я использую Termux. Я попробовал BusyBox, но поскольку я парень Ubuntu, для меня это было слишком много, как MinGW. Поскольку мой телефон не укоренен, я доволен этим. Но я хотел бы использовать несколько своих сценариев Ubuntu BASH, и теперь я понимаю, что вам нужно изменить способ вызова сценария интерпретатором bash/sh. Будет ли то же самое для Termux в его текущей версии (0.2-stable), как и для BusyBox?