Latexmk,来自 Makefile,来自 bash 脚本,来自 Cron - Latexmk 未执行

Latexmk,来自 Makefile,来自 bash 脚本,来自 Cron - Latexmk 未执行

我有几个包含 LaTeX 文件的 Git 存储库,我想自动排版这些文件。这个想法是有一个中央 bash 脚本(由 cronjob 运行),在每个存储库中执行 bash 脚本,该脚本 (1) 提取新的提交并 (2) 执行make all,这应该调用latexmk更改的 LaTeX 文件。

中央 bash 脚本仅包含以下行:

bash ./repos/repo-xyx/cron.sh

然后repos/repo-xyz/cron.sh是这样的:

cd "$(dirname "$0")"
git pull
make all
cd -

并在同一目录下的 Makefile 中:

all: $(subst .tex,.pdf,$(wildcard *.tex))

%.pdf: %.tex
        latexmk -pdf -pdflatex="pdflatex -shell-escape" $< </dev/null

在我的用户的 crontab 中,我有* * * * * bash .../cron.sh 2>&1 > .../cron.logSHELL=/bin/bash

当 cronjob 执行时,我在日志中读到以下内容:

Already up-to-date.
latexmk -pdf -pdflatex="pdflatex -shell-escape" myfile.tex </dev/null
.../ (this comes from the line "cd -")

如您所见,latexmk已调用但不执行任何操作。myfile.pdf没有生成。

当我bash cron.sh从最高目录运行(作为同一用户)时,这工作。

当从 cron 作业运行的 bash 脚本运行时,什么可能导致 Makefile 不执行命令(至少,我认为 make 不执行此命令)?

这是 上的 GNU Make 3.81 Linux ubuntu 3.13.0-51-generic #84-Ubuntu SMP Wed Apr 15 12:08:34 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

答案1

问题原来是pdflatex我的$HOME/.profile.因此我将 cronjob 更改为:

* * * * * . $HOME/.profile; bash .../cron.sh 2>&1 > .../cron.log

依据https://unix.stackexchange.com/a/27291/37050

相关内容