cron은 환경 변수를 확장하지 않습니까?

cron은 환경 변수를 확장하지 않습니까?

내 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

관련 정보