Les chemins réguliers pour bash ne fonctionnent pas dans l'application termux. J'ai essayé : /usr/bin/bash et /bin/bash La commande 'whereis' donne également le résultat suivant : $ whereis bash bash : /data/data/com.termux/files/usr/bin/bash Mais ce chemin n'est pas non plus correct. Je dois donc exécuter chaque script bash précédé du mot 'bash'. Et je ne peux pas exécuter les scripts bash sans ce mot.
Réponses
Trop de publicités?En septembre 2017, le mainteneur de Termux a publié un paquetage. termux-exec
qui se termine par execve(2)
de sorte que les fichiers qui ont une ligne shebang comme #!/bin/sh
o #!/usr/bin/env
fonctionnera correctement dans Termux. Il suffit d'exécuter
pkg install termux-exec
et redémarrez Termux (ou ouvrez une nouvelle session). Vous pourrez alors exécuter #!/bin/sh
scripts.
La solution précédente était la suivante :
Termux fournit un utilitaire pratique
termux-fix-shebang
Dont la description se lit comme suit :
Réécrit les shebangs dans les fichiers spécifiés pour fonctionner sous Termux, ce qui est fait en réécrivant
#!*/bin/binary
a#!$PREFIX/bin/binary
.Il suffit de l'appliquer aux scripts que vous souhaitez exécuter. Il fait ce que son nom suggère : corriger la ligne shebang
#!/xxx
de vos fichiers de script. Il peut également fixer d'autres scripts comme Perl ou Python.
Notez également que par défaut, votre répertoire de travail n'est pas dans $PATH
Vous ne pouvez donc pas taper directement myscript.sh
mais au lieu de cela
./myscript.sh
^~
... ou spécifier explicitement un interpréteur de commandes (dans ce cas, vous n'avez pas besoin du préfixe de répertoire) :
bash myscript.sh
^~~~
Installer termux-exec
. C'est un nouvel utilitaire qui devrait résoudre votre problème de $PATH. Termux-exec vous permet d'exécuter des scripts avec des shebangs pour les structures de fichiers Unix traditionnelles. Voir https://wiki.termux.com/wiki/Termux-exec pour plus d'informations.