bash - 如何从自定义 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 规则成功触发时,它会失败。- 但为什么?
解决方案
推荐阅读
- java - 在锁定屏幕上显示媒体播放器通知
- python - 如何使用 Python 解析十六进制框架 XML?
- python - Python Selenium:弹出窗口上的下拉菜单不可交互
- python - 连续拟合多个 Keras 模型会导致 GPU OOM
- python - chardet.detect 返回空语言
- python - Pandas 无法使用 DataFrame 找到 Q3 季度增长率良好的商店
- php - 带有 JOIN 的 SUM() 返回不正确的值
- python - 子类中不存在的类属性
- xamarin - Xamarin.forms Splashscreen (Android) 后闪现的白屏
- python - 语义分割中的数据集拆分