### Similar, yes, except for the dependencies, the topological sort, the macro processing, and the expert system ###
If you do nothing but put shell commands in a *Makefile* then it is in fact a lot like a catalog of "batch files," and it executes each one when its associated named *target* is specified.
However, it is more typical to specify a graph of *dependencies* in a makefile, in which case *make* does a ***[topological sort][1]*** of all the dependencies in order to cleverly build everything only once and in the right order starting with the earliest prerequisites.
And to be complete, I should add that *make* is also a macro processor. It's oriented towards software build systems, so it provides handles on symbolic elements in its problem domain, such as the names of sources and targets.
Now, make is not *specifically* a general purpose expert system,<sup>1</sup> but it does do more than just package up shellcode, and technically it does fit the expert system definition.
Make contains an ***[inference engine][2]***. All versions of make have ***[suffix rules][3]***, some versions also implement ***[pattern rules][4]***. When combined with your specification (more rules, typically ones defining a software application) the result is an ***[expert system][5]*** which will decide what needs to be compiled, linked, purchased on [***eBay***][6], whatever, all depending on the data and commands you have provided.
<hr>
<sup>1. It's an *easy-to-use* expert system, instead. Skynet will probably not emerge from an accidental typo in a complicated Makefile.</sup>
[1]:
[To see links please register here]
[2]:
[To see links please register here]
[3]:
[To see links please register here]
[4]:
[To see links please register here]
[5]:
[To see links please register here]
[6]:
[To see links please register here]