4 votes

Où puis-je exécuter un script .sh sur Android sans Root ?

Dernièrement, j'ai joué avec les scripts .sh dans Android. Au début, j'ai utilisé BusyBox et son utilitaire de script intégré, bien que je me sois rapidement rendu compte que coder sur le téléphone n'est pas le meilleur, j'ai donc basculé sur mon bureau et commencé à utiliser ADB pour pousser mes scripts sur mon appareil. Tout a bien fonctionné pendant environ deux semaines, jusqu'à ce que, récemment, les mêmes scripts qui fonctionnaient parfaitement auparavant me disent quelque chose. : not found[0]: syntax error: '{ Erreur. J'ai copié exactement le même code de mon script et j'ai utilisé BusyBox pour le créer pour moi, et de cette façon il fonctionne parfaitement. Le code est donc correct.

Après quelques recherches, je pense que c'est soit à cause des permissions, soit à cause de l'encodage, soit à cause de l'emplacement des scripts. J'ai essayé plusieurs emplacements différents (parce que je veux pouvoir exécuter les scripts sans Root), et j'ai fini par choisir /storage/emulated/0 . Si j'ai bien compris, il s'agit d'un lien symbolique vers le stockage interne, qui est accessible en lecture/écriture sans Root. Mais peut-être qu'il est parfois exécutable et parfois non ? Je n'en sais rien.

Ma question est donc la suivante : Quel est le meilleur emplacement sur un appareil Android pour exécuter des scripts sans Root ? De préférence, un chemin qui fonctionne sur n'importe quel appareil Android.

Info :

  • Samsung S7 SM-G930F rooté
  • Android 8.0.0
  • J'utilise #!/system/bin/sh dans les fichiers .sh
  • J'exécute les scripts avec sh script.sh
  • Lorsque l'on essaie de l'exécuter en tant qu'exécutable ./script.sh Je reçois un Permission denied erreur. Avec ou sans Root.

PS : Et si quelqu'un a une idée de la raison pour laquelle les mêmes scripts ont cessé de fonctionner sans crier gare, je serais heureux de le savoir !

UPDATE : Grâce à @IrfanLatif, j'ai réussi à corriger le problème des : not found[0]: syntax error: '{ Erreur ! J'utilisais Visual Studio Code comme éditeur pour les scripts, ce qui les enregistrait avec la séquence de fin de ligne. CRLF ce qui n'est pas du goût d'Android. Pour y remédier facilement, il suffit de remplacer les fins de ligne par LF problème résolu. Consultez les commentaires pour plus d'informations.

8voto

pr0nin Points 353

/storage/emulated/0 est généralement monté de manière à empêcher l'exécution de programmes à partir de cet emplacement.

Par conséquent, même si le bit exécutable de votre script est défini, vous ne pourrez pas l'exécuter directement. Bien sûr, vous pouvez toujours l'exécuter via sh :

/system/bin/sh /storage/emulated/0/test.sh

Il existe également le répertoire /data/local/tmp qui est accessible en écriture sans Root (par exemple via adb). Vous pouvez y placer un script et l'exécuter directement.

Note : L'énumération du contenu de /data y /data/local est refusée pour les utilisateurs qui n'ont pas le droit d'accès, mais dans le cas de /data/local/tmp vous avez à nouveau des autorisations.

1voto

Baljeet Verma Points 1

J'utilise le Pydroid3 sur la même configuration d'appareil.

sh script.sh semble y travailler.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X