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
задан 14 November 2017 в 14:36

2 ответа

Да, так должно. 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.

0
ответ дан 18 July 2018 в 05:39

Да, так должно. 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.

0
ответ дан 24 July 2018 в 18:23

Другие вопросы по тегам:

Похожие вопросы: