udev não executa parte do script

1

Estou tentando fazer com que o udev desative meu teclado de laptop quando um teclado externo estiver conectado. Até agora eu tenho o seguinte script que funciona quando eu o chamo diretamente.

#!/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]+).*//g''
echo '/usr/bin/xinput list' >> /home/apockli/list

Quando executado conectando o teclado, o arquivo list contém o seguinte:

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

Eu realmente não entendo por que which git funciona, mas /usr/bin/git status não e os comandos xinput não são gravados no arquivo ou acabam desativando o teclado.

Qualquer ajuda seria muito apreciada, já que passei muito tempo tentando fazer com que isso funcione.

Obrigado

    
por user2137134 06.10.2017 / 22:06

1 resposta

0

Sim, deveria ser assim. O Udev inicia o comando em outro diretório de trabalho do que o esperado. Verifique isso adicionando:

pwd >>/home/apockli/list

Tente alterar o diretório inicial:

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

Além disso, você deve ter um repositório git existente, para ver uma saída ou obter apenas uma linha em branco:

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

O que você vê é uma mensagem de erro de stderr stream não stdout .

    
por user.dz 03.04.2018 / 13:56