I have several Git repositories with LaTeX files that I want to have typeset automatically. The idea is to have a central bash script (run by a cronjob) that executes a bash script in every repository, which (1) pulls new commits and (2) executes
make all, which should call
latexmk on the changed LaTeX files.
The central bash script simply contains lines like:
repos/repo-xyz/cron.sh is something like:
cd "$(dirname "$0")" git pull make all cd -
And in the Makefile in the same directory:
all: $(subst .tex,.pdf,$(wildcard *.tex)) %.pdf: %.tex latexmk -pdf -pdflatex="pdflatex -shell-escape" $< </dev/null
In my user's crontab, I have
* * * * * bash .../cron.sh 2>&1 > .../cron.log and
When the cronjob is executed, I read the following in the log:
Already up-to-date. latexmk -pdf -pdflatex="pdflatex -shell-escape" myfile.tex </dev/null .../ (this comes from the line "cd -")
As you can see,
latexmk is invocated but doesn't do anything.
myfile.pdf is not generated.
When I run
bash cron.sh (as the same user) from the highest directory, this does work.
What could cause the Makefile to not execute commands when run from a bash script that is run by a cron job (at least, I think it's make not executing this command)?
This is GNU Make 3.81 on
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.