2013-12-15 4 views
3

$ HOME, $ PWD, $ OLDPWD, $ USER, $ PATH 등의 기본 제공 변수에 액세스 할 수 있도록 crontab 환경을 설정할 수있는 방법은 무엇입니까? $ PS1 등, 그래서 이러한 변수에 의존 스크립트는 crontab 환경에서 실행할 수 있습니까? 이 문제는 제가 모르는 파일을 소싱하는 문제입니까 아니면 약간 더 복잡한 문제입니까?Crontab : BASH 내부 변수에 대한 액세스

답변

2

이 변수는 항상 예상대로 설정됩니다 (HOME, PWD, USER).

이 같은 스크립트를 예약하는 경우

0 0 * * * /path/to/script.sh 

를하고 스크립트의 첫 줄이 실행되면 다음 아마~/.bashrc하지만 ~/.bash_profile 또는 ~/.profile 소스 것 #!/bin/bash입니다. 그 외에도 언급 한 변수는 예상대로 작동해야합니다. 예를 들어 스크립트에서 디렉토리를 변경하면 OLDPWDPWD이 업데이트됩니다. PS1이 스크립트와 어떻게 관련이 있는지 모르겠다. 한편

, 경우에 crontab 단일 명령을 예약하려면 당신이 공급 될 .bashrc을 원하는, 당신은 다음과 같이 작성해야합니다 :

0 0 * * * . .bashrc; somecmd 
# or: 
0 0 * * * bash -c somecmd 

이 또한 염두에 두어야 당신 있지만, crontab에 변수를 설정할 수 있기 때문에 쉘 스크립트의 변수와 다르게 작동합니다. 예를 들어 이러한 작업 :

SHELL = /bin/bash 
SHELL=/bin/bash 
PATH=~/bin:/usr/bin/:/bin 

반면에 이것은 당신이 무엇을 기대하지 않을 것이다 :

PATH=$HOME/bin:$PATH 

바와 같이 man 5 crontab 설명, 값합니다 (= 후 아무것도) $HOME 때문에, 구문 분석되지 않습니다 이 예에서 $PATH은 문자 그대로 취해질 것입니다.

관련 문제