Você pode substituir a $SYSTEMD_EDITOR
variável de ambiente para usar um comando diferente diferente do seu editor ao executar systemctl edit
.
Por exemplo, usar algo como SYSTEMD_EDITOR='cp /path/to/source.file'
parece funcionar bem (mesmo que seja muito feio, esperando que o último argumento seja anexado pelo systemd!)
Para o seu caso em particular, você pode usar:
$ { echo "[Service]";
echo "ExecStartPre=/bin/sleep 5";
} >~/tmp/sddm-override.conf
$ sudo env SYSTEMD_EDITOR="cp $HOME/tmp/sddm-override.conf" systemctl edit sddm
Mas tudo que o systemctl edit
realmente faz é criar um arquivo de substituição (no caso, chamado override.conf
) sob o diretório /etc/systemd/system/<service>.service.d/
, que é criado se não existir ... Então, fazer isso diretamente também é uma abordagem totalmente aceita. (Veja as menções de "drop-in" e "override" na página de manual do systemd.unit para mais detalhes.)
Então, no seu caso, essa seria uma solução apropriada:
$ sudo mkdir -p /etc/systemd/system/sddm.service.d/
$ { echo "[Service]";
echo "ExecStartPre=/bin/sleep 5";
} | sudo tee /etc/systemd/system/sddm.service.d/10-startup-delay.conf
$ sudo systemctl daemon-reload
O que descarta um arquivo com o conteúdo esperado no diretório "drop-in" de sua unidade, e nesse caso você também pode nomear apropriadamente depois do que ele tenta realizar.
ATUALIZADO: Como aponta @GracefulRestart, você precisa de um systemctl daemon-reload
após adicionar um drop-in diretamente.