Обычные пути для bash не работают в приложении termux. Я пробовал: /usr/bin/bash и /bin/bash Также команда «whereis» дает следующий вывод: $ whereis bash bash: /data/data/com.termux/files/usr/bin/bash Но этот путь также не верно. Итак, я должен запускать каждый сценарий bash со словом «bash» перед ним. И не может запускать bash-скрипты без него.
Если myscript.sh
его нет в вашем файле $PATH
, вам нужно запустить его по пути, а не по базовому имени. Предполагая, что вы находитесь в том же каталоге, что и скрипт, запустите
./myscript.sh
Обратите внимание на ведущую./
В сентябре 2017 года сопровождающий Termux выпустил пакет termux-exec
, который завершается execve(2)
так, что файлы, имеющие строку shebang, например #!/bin/sh
или #!/usr/bin/env
, будут правильно работать в Termux. Просто беги
pkg install termux-exec
и перезапустите Termux (или откройте новый сеанс). Теперь вы сможете запускать #!/bin/sh
сценарии.
Предыдущее решение было следующим:
Termux предоставляет удобную утилиту
termux-fix-shebang
Чье описание гласит:
Перепишите шебанги в указанные файлы для запуска под Termux, что делается путем перезаписи
#!*/bin/binary
в#!$PREFIX/bin/binary
.Просто примените его к сценариям, которые вы хотите запустить. Он делает то, что предполагает его название: исправляет строку shebang
#!/xxx
в ваших файлах скриптов. Он также может исправлять другие скрипты, такие как Perl или Python.
Также обратите внимание, что по умолчанию ваш рабочий каталог не находится в$PATH
, поэтому вы не можете напрямую ввести myscript.sh
, а вместо этого
./myscript.sh
^~
... или явно указать оболочку интерпретатора (в этом случае вам не нужен префикс каталога):
bash myscript.sh
^~~~
./myscript.sh
?termux-fix-shebang
это устарело, так как termux-exec
это лучшее решение? Если да, проголосуйте за ответ @sd-rausty.Установить termux-exec
. Это новая утилита, которая должна решить вашу проблему с $PATH. Termux-exec позволяет выполнять сценарии с помощью shebangs для традиционных файловых структур Unix. См. https://wiki.termux.com/wiki/Termux-exec для получения дополнительной информации.
Гримуар
/data/data/com.termux/files/usr/bin/bash
единственный правильный путь.Дэн Халм
Йозеф Климук
Гримуар
#!/data/data/com.termux/files/usr/bin/bash
первой строкой скрипта можно выполнить скрипт, просто нажав/path/to/the/script.sh
.Йозеф Климук
Йозеф Климук