Skip to Main Content

Software Carpentry


Broadly speaking, there is a tension between making computer systems fast and making them easy to use.

A common solution is to create a 2-layer architecture in which a fast, somewhat opaque core is surrounded by a more friendly scriptable interface. The Unix shell is an example if this: It is the scriptable shell around the operating system. It provides a simple (or simpler) interface for making the operating system do work, without having to know exactly how it accomplishes that work.

There are many "flavors" of shell (bash, zsh, dash, sh, etc), of which Bash is the most widely-used. This is the shell we use in our workshops.