If I create a cronjob as:* * * * * /root/runfileAnd I put the contents of /root/runfile as:#!/bin/bashprintenv >> /root/printenvThe contents that appear in /root/printenv are: LANGUAGE=en_CA:enHOME=/rootLOGNAME=rootPATH=/usr/bin:/binLANG=en_US.UTF-8SHELL=/bin/shPWD=/rootNote that it says SHELL=/bin/sh however my script has a shebang as #!/bin/bash. But printenv (env, set) are all reporting /bin/sh as the shell. However if I run those commands inside runfile it successfully reports /bin/bash:ps -p$$ -ocmd= >> /root/printenvOR readlink /proc/$$/exe >> /root/printenvIt proves I'm in an actual /bin/bash shell:/bin/bashAs I write this question, I'm realizing that perhaps the reason is that it's inheriting the previous SHELL environment variable, and that never changes which is why its contents are still from the cron calling process which is /bin/sh. That explanation is confirmed in the second linked question by Gilles. 
Printenv from inside cronjob not reporting shebanged interpreter
bash;cron