AN
The general idea is that make supports (reasonably) minimal rebuilds -- i.e., you tell it what parts of your program depend on what other parts. When you update some part of the program, it only rebuilds the parts that depend on that. While you could do this with a shell script, it would be a lot more work (explicitly checking the last-modified dates on all the files, etc.) The only obvious alternative with a shell script is to rebuild everything every time.
в начале 2000х для билда линухи из исходников - божетвенный инструмент. В 2020 еще одна сущность в проекте, когда можно тот же sh скрипт написать для цепочки команд... хз надо ли оно вам.