Sua pergunta é uma variação do FAQ Por que as coisas funcionam de maneira diferente no systemd? .
Um dos benefícios do systemd
é que ele fornece um ambiente de execução consistente. Para erro do lado da segurança e simplicidade, as variáveis de ambiente definidas são mínimas.
Os documentos relacionados no systemd
ambiente de execução detalham o que está definido.
Você mencionou que sua configuração estava no diretório root
home. man mailx
confirma Está procurando em ~/.mailrc
, ao contrário do caminho fixo /root/.mailrc
.
Os systemd
docs esclarecem que a variável $HOME
só é definida quando a diretiva User=
é usada. Você não compartilhou seu arquivo systemd
service, mas presumo que, como você está executando a tarefa como root, você não usou a diretiva User=
. Isso poderia explicar parte do seu problema.
Também parece que um caminho que você deseja pode não ser definido pela sua variável de ambiente $PATH
quando executado por systemd
. Você pode confirmar isso substituindo a linha ExecStart=
no seu serviço por:
ExecStart=/bin/echo "My path is $PATH"
Se o caminho mailx
não estiver listado, você poderá definir explicitamente com uma diretiva Environment=
.
Se essas dicas explícitas não resolverem seu problema, confira as Perguntas frequentes relacionadas acima para mais possibilidades.