udev 不运行部分脚本

udev 不运行部分脚本

我正在尝试让 udev 在连接外部键盘时禁用我的笔记本电脑键盘。到目前为止,我有以下脚本,当我直接调用它时它可以工作。

#!/bin/bash
export DISPLAY=":0"
export XAUTHORITY="/run/user/1002/gdm/Xauthority"
echo $XAUTHORITY >> /home/apockli/list
echo helloX >> /home/apockli/list
echo `which git` >> /home/apockli/list
echo `/usr/bin/git status` >>/home/apockli/list
echo `/usr/bin/xinput list` >> /home/apockli/list
/usr/bin/xinput float `/usr/bin/xinput list | awk '/Apple/' | sed -r 's/.*id=([0-9]+).*/\1/g'`
echo `/usr/bin/xinput list` >> /home/apockli/list

通过实际连接键盘运行时,该list文件包含以下内容:

/run/user/1002/gdm/Xauthority
helloX
/usr/bin/git
*<Some trailing blank lines>*

我真的不明白为什么which git它可以工作但却/usr/bin/git status不起作用,并且xinput命令既没有写入文件,也没有真正禁用键盘。

我已经花了很长时间尝试让它发挥作用,因此我将非常感激任何帮助。

谢谢

答案1

是的,应该是这样的。Udev 在您预期的工作目录中启动了其他命令。通过添加以下内容进行检查:

pwd >>/home/apockli/list

因此尝试改变主目录:

echo `/usr/bin/git -C /home/apockli/ status` >>/home/apockli/list

此外,您应该有一个现有的 git 存储库,才能看到输出,否则您只会得到空白行:

$ git status
fatal: Not a git repository (or any of the parent directories): .git

您看到的是来自stderr流而不是的错误消息stdout

相关内容