Crontab /etc/profile.d

begin the shell script with:

#!/bin/bash -l

This causes bash to start as a login shell, which means it will read /etc/profile and ~/.bash_profile.


Set SHELL on your crontab:

SHELL=/bin/bash
* * * * * # your_job