首页 > 解决方案 > 如何从自定义 udev 规则运行具有正确权限的脚本?

问题描述

我设置了一个自定义 udev 规则,当我的蓝牙鼠标连接时触发:

ACTION=="add" \
, ATTRS{idProduct}=="XXX" \
, ATTRS{idVendor}=="XXX" \
, ENV{DISPLAY}=":0" \
, ENV{XAUTHORITY}="/run/user/1000/gdm/Xauthority" \
, RUN+="/home/XXX/.scripts/mouse_connected.sh"

udevadm 测试成功,一切似乎都很好。然后我创建了应该触发的脚本:

#!/bin/bash  
if (xinput list | grep Maus | grep -o id=[0-9]* | grep -o [0-9]*$); 
        then xinput set-button-map "$(xinput list | grep Maus | grep -o id=[0-9]* | grep -o [0-9]*$)" 1 1 3 && logger "success";  
        else logger "fail" && sleep 3;
fi

当我使用“bash'/home/XXX/.scripts/mouse_connected.sh'”在终端中手动运行脚本时,它按预期工作。但是,当它通过我的自定义 udev 规则成功触发时,它会失败。- 但为什么?

标签: bashunixubuntu-18.04udev

解决方案


推荐阅读