Cron & Task Scheduling (Cron/Systemd Timers/At)
Stop your shell scripts from choking on environment variables in cron
🧩 The Challenge
Scripts that run perfectly in your terminal die a painful death the second you toss them into cron. You spend three hours debugging why a path or a library is missing, only to realize the cron environment is a stripped-down nightmare.
💡 The Fix
Start explicitly sourcing your environment variables or full shell profiles at the top of your crontab execution. It forces the script to see the world the same way you do.
* * * * * /bin/bash -lc '/path/to/your/script.sh'
⚙️ Why It Works
Adding the -l flag forces bash to act like a login shell, which reads your .bash_profile or .profile just like you just logged in via SSH. It’s the easiest way to pull in your PATH and locale settings without hardcoding them everywhere.
🚀 Pro-Tip: Always use absolute paths for your binaries inside the script anyway; don’t rely on the PATH variable for anything critical.
Linux Tips & Tricks | © ngelinux.com | 8/19/2026
