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: bash ./repos/repo-xyx/cron.sh Then in `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 `SHELL=/bin/bash`. 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`.