我正在尝试让 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
。