A diferença entre executar o script via systemd
e executá-lo diretamente diretamente é o ambiente. Você pode testá-lo assim. No seu arquivo de unidade, adicione isso à seção [Serviço], para teste:
StandardOutput=console
Em seguida, no seu script bash, na parte superior, adicione esta linha para despejar o ambiente:
env
Agora, execute o script dentro e fora do systemd e compare as variáveis de ambiente que são descartadas.
É um recurso do systemd que controla rigidamente o ambiente. Isso melhora a segurança e fornece consistência.