3 votos

Ruta para bash en el término de Android

Las rutas regulares para bash no funcionan en la aplicación termux. He probado: /usr/bin/bash y /bin/bash Además, el comando 'whereis' da la siguiente salida: $ whereis bash bash: /data/data/com.termux/files/usr/bin/bash Pero esta ruta tampoco es correcta. Por lo tanto, tengo que ejecutar cada script de bash con la palabra 'bash' antes de él. Y no puedo ejecutar scripts de bash sin eso.

0 votos

/data/data/com.termux/files/usr/bin/bash es la única ruta correcta.

0 votos

¿Qué estás tratando de lograr?

0 votos

Como en Linux regular, quiero pasar: /bin/bash o /usr/bin/bash para ejecutar scripts. Pero no quiero escribir 'bash' antes de cada nombre de script.

3voto

Guillermo Gomez Puntos 423

En septiembre de 2017, el mantenedor de Termux lanzó un paquete termux-exec, que envuelve execve(2) para que los archivos que tienen una línea shebang como #!/bin/sh o #!/usr/bin/env se ejecuten correctamente en Termux. Simplemente ejecuta

pkg install termux-exec

y reinicia Termux (o abre una nueva sesión). Ahora podrás ejecutar scripts con #!/bin/sh.

La solución anterior era la siguiente:

Termux proporciona una utilidad útil

termux-fix-shebang

Cuya descripción dice:

Reescribe las shebangs en los archivos especificados para ejecutar en Termux, lo cual se hace reescribiendo #!*/bin/binary a #!$PREFIX/bin/binary.

Aplica esto a los scripts que desees ejecutar. Hace lo que su nombre sugiere: arreglar la línea shebang #!/xxx de tus archivos de script. También puede arreglar otros scripts como Perl o Python.

También ten en cuenta que por defecto tu directorio de trabajo no está en $PATH, por lo que no puedes escribir directamente myscript.sh, sino que en su lugar

./myscript.sh
^~

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

bash myscript.sh
^~~~

0 votos

Todavía. $myscript.sh myscript.sh: command not found

2 votos

@JosefKlimuk ¿Podrías por favor escribir ./myscript.sh?

0 votos

Ya fue respondida por Dan Hulme el 1 de noviembre.

3voto

Andy Brudtkuhl Puntos 1714

Si myscript.sh no está en tu $PATH, necesitas ejecutarlo usando su ruta completa, no solo su nombre base. Suponiendo que estás en el mismo directorio que el script, ejecuta

./myscript.sh

Nota el ./ al inicio

0 votos

¡Oye, hubiera apreciado si me hubieras dejado la oportunidad! Es la tercera vez que se publica la misma respuesta.

0 votos

@iBug definitivamente mereces el crédito por profundizar en el problema. Miré y el comentario de Josef dejó claro cuál era su error. Iba a comentar debajo de tu respuesta para sugerir esto, pero me di cuenta de que en realidad estaba escribiendo una respuesta.

0 votos

Ah sí. Ahora veo la diferencia.

3voto

Brian Mains Puntos 31772

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

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X