이 스크립트를 실행하려고 합니다.
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
.
또한 스크립트가 루트로 실행되는 경우 다음을 수행해야 할 수도 있습니다.
sudo -u yourUsername DISPLAY=:0.0 notify-send 'Battery low'