![알림 전송은 스크립트에서는 작동하지 않지만 터미널에서는 작동합니다.](https://linux55.com/image/73712/%EC%95%8C%EB%A6%BC%20%EC%A0%84%EC%86%A1%EC%9D%80%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%EB%8A%94%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%A7%80%EB%A7%8C%20%ED%84%B0%EB%AF%B8%EB%84%90%EC%97%90%EC%84%9C%EB%8A%94%20%EC%9E%91%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4..png)
이 스크립트를 실행하려고 합니다.
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'