Часто различия между запуском сценария вручную и его запуском через systemd связаны с различиями в среде. Перед вызовом xdg-open
добавьте в отдельную строку команду env
, которая выгружает среду.
Теперь запустите тест вручную и через systemd
. Поищите другие переменные, помимо DISPLAY
, которые могут вызывать разницу. Продолжая добавлять переменные среды в сценарий systemd
, вы сможете найти те, которые необходимы systemd
для этой работы.
Ваш код bash в вашем тесте выглядит нормально, но вот версия, которая немного более идиоматична, если вам интересно. bash
естественным образом разбивается на пробелы, а URL-адреса не содержат пробелов, поэтому этот альтернативный код работает. Я также заменил do / done
фигурными скобками:
websites="
http://unix.stackexchange.com/
http://stackoverflow.com/"
for i in $websites; {
# works with /usr/bin/firefox
/usr/bin/xdg-open "$i"
}