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]