私のcrontabの設定がうまくいったことがわかりましたが、そうではありPATH=/home/toothrot/bin
ませ
$HOME/bin
んでした。確認してみると$HOME
設定が予想どおりです。 cronは環境変数を拡張しませんか?パスからスクリプトを呼び出して試しました。
* * * * * fetchmail
PATH
このスクリプトは、完全な明示的なパスに設定されている場合はログファイルに記録しますが、使用している場合は記録しません。$HOME
おそらく後者の場合は実行されないからです。
ベストアンサー1
使用しているcron実装を指定しませんが、少なくともDebianベースのシステム(Vixie cron IIRCから派生)では指定しません。からman 5 crontab
:
An active line in a crontab will be either an environment setting or a
cron command. The crontab file is parsed from top to bottom, so any
environment settings will affect only the cron commands below them in
the file. An environment setting is of the form,
name = value
where the spaces around the equal-sign (=) are optional, and any subse‐
quent non-leading spaces in value will be part of the value assigned to
name. The value string may be placed in quotes (single or double, but
matching) to preserve leading or trailing blanks. To define an empty
variable, quotes must be used. The value string is not parsed for envi‐
ronmental substitutions or replacement of variables, thus lines like
PATH = $HOME/bin:$PATH
will not work as you might expect. And neither will this work
A=1
B=2
C=$A $B
There will not be any subsitution for the defined variables in the last
value.
An alternative for setting up the commands path is using the fact that
many shells will treat the tilde(~) as substitution of $HOME, so if you
use bash for your tasks you can use this:
SHELL=/bin/bash
PATH=~/bin:/usr/bin/:/bin