Make is acceptable for running arbitrary bunches of commands. For anything grander, I just write shell scripts that call shell scripts. Once you know shell well, it's very easy to throw together a simple build system. For a complex build system I'd go find a complex build tool.