Make is incredibly cursed. My favorite example is it having a built-in rule (oversimplified, some extra Makefile code that is pretended to exist in every Makefile) that will extract files from a version control system. https://www.gnu.org/software/make/manual/html_node/Catalogue...
What you're saying is essentially ”Just Write Bash Scripts”, but with an extra layer of insanity on top. I hate it when I encounter a project like this.
No I'm saying use Makefiles, which work just fine. Mark your targets with PHONY and move on.
https://github.com/casey/just is an uncursed make (for task running purposes - it's not a general build system)