MakefileのLatexmk、bashスクリプトのCron - Latexmkが実行されない

MakefileのLatexmk、bashスクリプトのCron - Latexmkが実行されない

自動的に組版したい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

に従ってhttps://unix.stackexchange.com/a/27291/37050

おすすめ記事