it-roy-ru.com

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

Мой тот же скрипт 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'";
15
YumYumYum

Может быть, это будет работать при вызове переводчика со скриптом?

$ bash ./test.sh

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

UPD

$ sh ./test.sh
10
ASten

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

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

21
tbg

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

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

5
Wesley Wiser

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

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

2
Namuna

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

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

Информация является выдержкой из этой статьи: КАК ЗАПУСТИТЬ СКРИПТЫ Shell На УСТРОЙСТВАХ Android

0
Kenpachi