Как запустить скрипт BASH в моем Android? - PullRequest
17 голосов
/ 11 ноября 2011

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

Ответы [ 5 ]

22 голосов
/ 11 ноября 2011

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

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

10 голосов
/ 11 ноября 2011

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

$ bash ./test.sh

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

UPD

$ sh ./test.sh
5 голосов
/ 11 ноября 2011

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

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

2 голосов
/ 03 января 2012

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

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

0 голосов
/ 19 апреля 2016

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

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

.информация является отрывком из этой статьи: КАК ЗАПУСТИТЬ СЦЕНАРИИ ОБОЛОЧКИ НА УСТРОЙСТВАХ ANDROID

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...