通知发送不适用于脚本,但适用于终端

通知发送不适用于脚本,但适用于终端

我正在尝试运行这个脚本:
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  

上面的第六行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'

相关内容