【发布时间】:2017-10-02 23:15:46
【问题描述】:
在树莓派 1 上,raspbian stretch lite 版本 9.1 - 内核版本 4.9.52+
我制作了一个 shell 程序,通过树莓派的 gpio(文件名为 led.sh)点亮一个 LED。有一部分我需要与一些文件进行交互:
function makeOn {
# status has value 1 if led is on and 0 if led is off
if [ $(status) -eq 1 ]; then
echo "led is already on"
else
#say we are using pin 18 and set it to output mode
echo "18" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio18/direction # this is line 38
# write output
echo "1" > /sys/class/gpio/gpio18/value # this is line 41
echo "led is on"
fi
}
我以 gpio 组中的用户身份运行它。这些是我试图在我的程序中处理的文件:
这就是我运行 led.sh 时发生的情况:
奇怪的是,我在shell上一一运行这些命令,没有问题。但是当我运行一个调用它们的脚本时,即使我在 gpio 组中,我也会得到一个权限被拒绝。首先,我认为 shell 可能会以特殊用户身份运行命令,并通过在几个位置向 led.sh 添加 echo $EUID 进行检查,它们都返回了我的用户 ID。
为什么该程序对这些文件的权限被拒绝,我该如何授予它权限/解决这个问题?
【问题讨论】:
-
您是否将脚本标记为可执行?即
chmod +x led.sh可能会有所帮助。如果这解决了它,请删除这个 Q,因为它每天都会被问到;-/。祝你好运。 -
@shellter 这不是问题,谢谢你的评论。
标签: bash shell raspberry-pi raspbian gpio