Ruta para bash en Android termux

Las rutas regulares para bash no funcionan en la aplicación termux. Probé: /usr/bin/bash y /bin/bash También el comando 'whereis' da el siguiente resultado: $ whereis bash bash: /data/data/com.termux/files/usr/bin/bash Pero esta ruta también es incorrecto. Entonces, tengo que ejecutar cada script bash con la palabra 'bash' antes. Y no puede ejecutar scripts de bash sin él.

/data/data/com.termux/files/usr/bin/bashes el único camino correcto.
¿Qué estás intentando lograr?
Como en Linux normal, quiero pasar: /bin/bash o /usr/bin/bash para ejecutar scripts. Pero no escribir 'bash' antes de cada nombre de script.
Al igual que @DanHulme, no entiendo dónde está el problema. Con #!/data/data/com.termux/files/usr/bin/bashla primera línea del script, entonces es posible ejecutar el script con solo /path/to/the/script.sh.
$ ls myscript.sh $ cat my* #!/data/data/com.termux/files/usr/bin/bash read -p ' enter what to echo ' input echo "ha ingresado $inputs" $ myscript.sh myscript .sh: comando no encontrado
Comando no encontrado...

Respuestas (3)

Si myscript.shno está en su $PATH, debe ejecutarlo por su ruta, no por su nombre base. Suponiendo que está en el mismo directorio que el script, ejecute

./myscript.sh

Tenga en cuenta la dirección./

Oye ♦, podría haber apreciado que me hubieras dejado la oportunidad... Es la tercera vez que se publica la misma respuesta.
@iBug Ciertamente mereces el crédito por profundizar en el problema. Miré y el comentario de Josef hizo evidente cuál fue su error. Iba a comentar debajo de su respuesta para sugerir esto, pero me di cuenta de que realmente estaba escribiendo una respuesta.
Oh yes. Veo la diferencia ahora.

En septiembre de 2017, el mantenedor de Termux lanzó un paquete termux-exec, que se completa execve(2)para que los archivos que tienen una línea shebang como #!/bin/sho #!/usr/bin/envse ejecuten correctamente en Termux. Solo corre

pkg install termux-exec

y reinicie Termux (o abra una nueva sesión). Ahora podrá ejecutar #!/bin/shscripts.

La solución anterior era la siguiente:

Termux proporciona una utilidad útil

termux-fix-shebang

Cuya descripción dice:

Reescriba shebangs en archivos específicos para ejecutarlos en Termux, lo que se hace reescribiendo #!*/bin/binaryen #!$PREFIX/bin/binary.

Simplemente aplíquelo a los scripts que desea ejecutar. Hace lo que sugiere su nombre: arreglar la línea shebang #!/xxxde sus archivos de script. También puede corregir otros scripts como Perl o Python.

También tenga en cuenta que , de forma predeterminada, su directorio de trabajo no está en$PATH , por lo que no puede escribir directamente myscript.sh, sino que en su lugar

./myscript.sh
^~

... o especifique explícitamente un shell de intérprete (en cuyo caso no necesita el prefijo del directorio):

bash myscript.sh
^~~~
Aún. $myscript.sh myscript.sh: comando no encontrado
@JosefKlimuk ¿Podría escribir ./myscript.sh?
Ya fue respondido por Dan Hulme el 1 de noviembre.
Parece que termux-fix-shebangestá obsoleto, ya que termux-execes una mejor solución? Si es así, vota la respuesta de @ sd-rausty.
@CarlWalsh Lo sé y ya voté a favor.

instalar termux-exec_ Es una nueva utilidad que debería resolver su problema de $PATH. Termux-exec le permite ejecutar scripts con shebangs para estructuras de archivos Unix tradicionales. Consulte https://wiki.termux.com/wiki/Termux-exec para obtener más información.