Написал скрипт:
#!/bin/bash
exportfile="/sys/class/gpio/export"
echo "$1" > "$exportfile"
echo "$2" > "/sys/class/gpio/gpio""$1""/direction"
exit 0;
# Примеры
# init-gpio-sh 5 in
# init-gpio-sh 3 out
При каждом запуске от пользователя pi входящего в группу gpio, bash ругался на 4 строку. Ошибка доступа. При запуске от пользователя root ошибки не было. Тогда я стал искать причину ошибки в правах пользователя, но у пользователя были необходимые права на все файлы в /sys/class/gpio/gpio
Если я от пользователя вводил проблемную команду отдельно, то проблемы не было. В итоге я добавил строку sleep 0.1 между третьей и четвёртой строками, и скрипт стал работать корректно.
#!/bin/bash
exportfile="/sys/class/gpio/export"
echo "$1" > "$exportfile"
sleep 0.1
echo "$2" > "/sys/class/gpio/gpio""$1""/direction"
exit 0;
# Примеры
# init-gpio-sh 5 in
# init-gpio-sh 3 out
# Пауза нужна что бы успел произойти экспорт
Raspbian последней версии.
Ошибка ли это? Или следствие того что ранее закрыли какую то дыру сделав выполнение операций с этими файлами для всех пользователей кроме root асинхронным? Пожалуйста проверьте повторяется ли у вас эта ошибка.