通知の送信はスクリプトでは機能しませんが、端末では機能します。

通知の送信はスクリプトでは機能しませんが、端末では機能します。

このスクリプトを実行しようとしています。
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  

上記の6行目は、notify-send "Battery-Low"端末で期待どおりに機能します。
ただし、スクリプトが実行されると標準出力にfoo出力されますbar
何が問題なのかわかりません。

ベストアンサー1

一部の環境変数がありません。この変数である可能性が高いですDISPLAY。次のことを試すことができます。

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

これがうまくいかない場合は、スクリプトと端末でコマンドを実行して、スクリプトの内部と端末の環境を比較できますenv

また、スクリプトがrootとして実行されている場合は、次のことを行う必要があります。

sudo -u yourUsername DISPLAY=:0.0 notify-send 'Battery low'

おすすめ記事