O problema é que o caminho para pdflatex
estava sendo definido no meu $HOME/.profile
. Assim, mudei o cronjob para:
* * * * * . $HOME/.profile; bash .../cron.sh 2>&1 > .../cron.log
de acordo com o link .
Eu tenho vários repositórios Git com arquivos LaTeX que eu quero compor automaticamente. A idéia é ter um script bash central (executado por um cronjob) que executa um script bash em cada repositório, o qual (1) obtém novos commits e (2) executa make all
, que deve chamar latexmk
no LaTeX alterado arquivos.
O script bash central contém linhas como:
bash ./repos/repo-xyx/cron.sh
Então, em repos/repo-xyz/cron.sh
é algo como:
cd "$(dirname "$0")"
git pull
make all
cd -
E no Makefile no mesmo diretório:
all: $(subst .tex,.pdf,$(wildcard *.tex))
%.pdf: %.tex
latexmk -pdf -pdflatex="pdflatex -shell-escape" $< </dev/null
No crontab do meu usuário, eu tenho * * * * * bash .../cron.sh 2>&1 > .../cron.log
e SHELL=/bin/bash
.
Quando o cronjob é executado, eu leio o seguinte no log:
Already up-to-date.
latexmk -pdf -pdflatex="pdflatex -shell-escape" myfile.tex </dev/null
.../ (this comes from the line "cd -")
Como você pode ver, latexmk
é invocado, mas não faz nada. myfile.pdf
não é gerado.
Quando executo bash cron.sh
(como o mesmo usuário) do diretório mais alto, isso faz funcionar.
O que poderia fazer com que o Makefile não executasse comandos quando executado a partir de um script bash que é executado por uma tarefa cron (pelo menos, acho que não é necessário executar este comando)?
Este é o GNU Make 3.81 em 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
.
O problema é que o caminho para pdflatex
estava sendo definido no meu $HOME/.profile
. Assim, mudei o cronjob para:
* * * * * . $HOME/.profile; bash .../cron.sh 2>&1 > .../cron.log
de acordo com o link .