110

Is it possible to make commands in crontab run with bash instead of sh? I know you can pass commands to bash with -c, but that's annoying and I never use sh anyway.

1
  • don't really know what you're doing (not familiar with cron) but if you are running a script then adding a shebang to it should work, not sure if I am correct.
    – Alvin Wong
    Oct 11, 2013 at 17:18

1 Answer 1

156

You should be able to set the environment variable prior to the cron job running:

SHELL=/bin/bash
5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
11
  • 3
    is it possible to also make it read .bashrc?
    – Fluffy
    Oct 10, 2013 at 15:46
  • 4
    @Fluffy .bashrc is - by definition - for interactive shells; so when started via cron, bash will only read this file if it is an interactive shell.
    – umläute
    Oct 10, 2013 at 16:03
  • 29
    I was able to make it read bashrc by adding BASH_ENV="/root/.bashrc". Thanks
    – Fluffy
    Oct 10, 2013 at 16:12
  • 4
    @Fluffy you should make that an answer
    – vol7ron
    Apr 11, 2017 at 21:37
  • 4
    Regarding .bashrc, bash -l looks useful, blog.endpoint.com/2015/02/cron-wrapper-keep-your-cron-jobs.html
    – mpapec
    May 4, 2017 at 5:15

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .