On Tue, Sep 02, 2008 at 02:18:45PM +0200, Steve S wrote:
> Hi all,
> 
> I want to run a cronjob in a user's environment (i.e. as this user and
> not as root).
> 
> The script foo.sh to be run by cron on behalf of the a user (johndoe)
> needs some env vars (paths) from that user's ~/.bashrc. 
> 
> I read about several solutions:
> 
> 1) use su
> 
> If I try in the crontab
> 
>     10 12 * * */2   su -p - johndoe -c /home/johndoe/foo.sh
> 
> I get the message "su must be run from a terminal" in the cron mail.

I would use 'crontab -e' as the user to define the cronjob.  Then you
do not have to specify the user.

> 2) define env vars in the crontab
> 
> It works if I define the env vars as a full path
> 
>     $SOME_VAR=/full/path/1
>     $SOME_OTHER_VAR=/full/path/2
>     10 12 * * */2   su -p - johndoe -c /home/johndoe/foo.sh
> 
> In ~/.bashrc, I have 
>     
>     $SOME_VAR=$HOME/path/1
>     $SOME_OTHER_VAR=$HOME/path/2
> 
> and I'd rather not dublicate the definitions.

Just put early in you script:

source ~/.bashrc

Regards
Johann

-- 
Johann Spies          Telefoon: 021-808 4036
Informasietegnologie, Universiteit van Stellenbosch

     "But God said unto him, Thou fool, this night thy soul
      shall be required of thee: then whose shall those things
      be, which thou hast provided? So is he that layeth up
      treasure for himself, and is not rich toward God."
                                        Luke 12:20,21 


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED] 
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to