notify-send não funciona a partir do script, mas funciona a partir do terminal

1

Estou tentando executar este script:% test.sh

#!/bin/bash  
BAT_LEVEL='acpi -b |grep -Eo "[0-9]+%"|grep -Eo "[0-9]+"'
CRIT=0                                                           
if [ $BAT_LEVEL -gt $CRIT ]; then
    echo "foo"
    aplay ~/apert.wav
    notify-send "Battery-Low"
    echo "bar"
fi  

A sexta linha acima, que é notify-send "Battery-Low" , funciona exatamente como você espera no terminal.
Mas quando o script é executado, ele apenas libera foo e bar no stdout.
Eu não tenho ideia do problema.

    
por Bibek_G 24.09.2015 / 13:45

1 resposta

2

Você está perdendo algumas variáveis de ambiente, provavelmente o DISPLAY one. Você poderia tentar o seguinte:

echo "foo"                                                   
DISPLAY=:0.0 notify-send "Battery-Low"                                    
echo "bar"

Se isso não ajudar, você poderá comparar o ambiente dentro do script e em um terminal executando o comando env em ambos.

Observe também que, se o script estiver sendo executado como root, talvez seja necessário fazer algo assim:

sudo -u yourUsername DISPLAY=:0.0 notify-send 'Battery low'
    
por 24.09.2015 / 14:07