自動的に組版したいLaTeXファイルを含むいくつかのGitリポジトリがあります。アイデアは、(1)新しいコミットを取得し、(2)変更されたLaTeXファイルを呼び出す必要があるファイルをmake all
実行する各リポジトリで実行される中央のbashスクリプト(cronjobによって実行)を持つことです。latexmk
中央の 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
* * * * * bash .../cron.sh 2>&1 > .../cron.log
私のユーザーのcrontabにはとがありますSHELL=/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