使用 systemd 服务执行时,不会使用 org-html-export-to-html 突出显示语法

No syntax highlighting with org-html-export-to-html when executing with systemd service

我有一个 bash 脚本,用于查找 emacs .org 文件并将其导出到给定目录中的 html。我知道 org-mode 使用 htmlize.el 为 SRC 块中的文本输出着色,这在从命令行执行时似乎工作正常,无论是作为 root 用户还是普通用户。但是,当使用 systemd 计时器自动执行此任务时,输出不再是彩色的。

for i in `find /home/user/dir -name '*.org'`
do
    emacs $i --batch -l /home/user/.emacs org-html-export-to-html --kill
done

我之前在直接执行脚本时遇到语法高亮显示问题,如上面摘录所示添加 -l /home/user/.emacs 时解决了这个问题 (publishNotes.sh)。

除了语法高亮显示之外的一切似乎都工作正常,这表明 systemd 服务和执行的脚本本身都根据计时器运行。

服务:

[Unit]
Description=Update website

[Service]
Type=simple
ExecStart=/home/user/bin/publishNotes.sh

定时器:

[Unit]
Description=Run every hour

[Timer]
OnCalendar=hourly
Unit=publishNotes.service

[Install]
WantedBy=multi-user.target

谢谢!

我猜这是因为当 运行 以 root 用户身份与 运行 在您的用户帐户下时加载的内容不同。从给出的信息中很难确切地说出什么。但是,我的第一个建议是尝试 运行 以您的用户身份使用该服务。尝试将 User=<username> 键添加到服务的 [Service] 部分,并检查其行为是否符合您的预期。