As programmers we use a large number of specialized languages for good reason, because we have a task to accomplish we tend to choose a language that we believe is just good enough to do the job. Programming languages become important because they contain interesting ideas, or they are very popular. How do languages that are just good enough become so popular?
Bash is another specialized language that is very popular for programming tasks on Unix, Linux, BSD, OS X, and Windows (Cygwin). Bash is also tied closely to an idiosyncratic yet well designed API, in this case the portable operating system interface, or POSIX. It has many shortcomings including a limited programming model, inelegant syntax, compatibility problems between different platforms, and inefficiencies in speed of execution and resource utilization. Yet, it is quick and easy to use, good for working with files and directories, and works well for automating system administration tasks.
There are a number of automation frameworks, such as Puppet, Chef, and CFEngine that are designed to manage large numbers of servers. The designers of these frameworks all take a slightly different approach, but all allow programmers to embed Bash shell scripts into the elements that are used to manage the servers. Even higher level frameworks for managing infrastructure on cloud computing platforms like CloudFormation and CloudScript are designed to manage multiple infrastructure elements such as networks, servers and storage. Not only do these frameworks allow programmers to embed Bash shell scripts into the elements that are used to manage the servers, but they allow to programmers to launch Puppet, Chef and CFEngine in the cloud computing platform.
Director of Engineering,