Я хочу работать на сценарии оболочки мой "bq Aquaris E4.5 Ubuntu-Edition" телефон в Терминальном Приложении и создал сценарий оболочки в/home/phablet/Documents/sync.sh
#!/bin/sh
# sync contacts and calendar with OwnCloud
syncevolution owncloud calendar-defaultcalendar
syncevolution --sync slow owncloud contacts
exit 0
Сценарий является исполняемым файлом, но возвратами:
bash: ./sync.sh: /bin/sh: bad interpreter : Permission denied
Я не уверен, какой интерпретатор работает на касании Ubuntu (удар, sh??) и я также не уверен, какие права пользователь по умолчанию имеет.
Так что случилось или пропавшие без вести?
Похож ошибка в терминальном приложении человечности .
, описание ошибки упоминает обходное решение:
Это, кажется, работает, когда я использую
bash ./testscript
.
Эти ./
дополнительный
Независимо от того, что это (ошибка или странная конфигурация):
./yourscript.sh
не работает над касанием Ubuntu. Обходное решение:
bash yourscript.sh
Попытайтесь изменить строку хижины на
#!/bin/bash
, а не
#!/bin/sh
Это примет значение по умолчанию интерпретатор для избиения, а не sh. Это должно быть более просто.
После некоторого (предварительного) тестирования кажется мне, что это не ошибка с терминальным приложением человечности, но вместо этого относится к тому, чтобы не быть позволенным запустить исполняемые файлы из корневого каталога. Вот почему bash /path/to/file
обработанный, но /path/to/file
не сделал, потому что удар находится в /bin
.
Я попытался запустить скрипт удара, сценарий Python и привет мировой g ++ скомпилированная программа C++, все с исполняемым набором битов, и ни один не будет работать когда в подкаталоге /home
. Ни один не будет работать, пока сценарии и приложения в других подкаталогах корня хорошо работают.
К сожалению, я должен все же найти решение: нет ничего в /etc/fstab
предложить /home
смонтирован как noexec
:
/userdata/user-data /home none bind 0 0
Я даже попытался повторно монтировать его явно как exec
использование mount -o remount,rw,exec /home
напрасно. Обновит, если я найду решение.
До сих пор единственное обходное решение должно использовать интерпретатор для запущения скриптов (Bash/Python и т.д.) или /lib/ld-linux-armhf.so.3 /path/to/file
для двоичных приложений.
Незначительное обновление: немного более изящное обходное решение должно переместить сценарий/приложение в другой каталог, такой как /opt
, и затем символьная ссылка на него. Тем путем можно выполнить его только /path/to/symlink
. Например, Вы могли сделать:
sudo mv /path/to/SCRIPT.sh /opt
ln -s /opt/SCRIPT.sh /path/to
Затем Вы могли просто ввести /path/to/SCRIPT.sh
выполнять его.
ОБНОВЛЕНИЕ С РЕШЕНИЕМ
Узнанный проблема относится к apparmor профилю безопасности для терминального приложения. Посмотрите мой вопрос и ответ здесь: касание Ubuntu – исполняемые файлы не запустятся в / корневом каталоге