Geralmente, as diferenças entre executar um script manualmente e executá-lo via systemd são diferenças devidas no ambiente. Antes da chamada xdg-open
, adicione o comando env
em sua própria linha, que despeja o ambiente.
Agora, execute o teste manualmente e via systemd
. Procure outras variáveis além de DISPLAY
que possam estar causando a diferença. Ao continuar adicionando variáveis de ambiente no script systemd
, você poderá encontrar as que o systemd
precisa para fazer isso funcionar.
Seu código bash no seu teste parece bem, mas aqui está uma revisão que é um pouco mais idiomática se você estiver interessado. bash
naturalmente divide no espaço e URLs não contêm espaço, portanto, esse código alternativo funciona. Eu também substituí o do/done
por chaves:
websites="
http://unix.stackexchange.com/
http://stackoverflow.com/"
for i in $websites; {
# works with /usr/bin/firefox
/usr/bin/xdg-open "$i"
}