Rehabilitating the POSIX shell
We build intricate systems with complex algorithms and invariants, aiming for guarantees of correctness and performance… and then we maintain and deploy these systems with shell scripts! What are shell scripts? If the POSIX shell is a programming language, what are its syntax and semantics? Can we apply PL tools to reason about the shell? Why haven’t prior PL attempts at understanding the shell redeemed it? In this talk, I’ll explain the shell’s semantics, demonstrate a tool for understanding the shell built on a mechanized small-step semantics of the shell, and explain why my approach is different from prior academic work on the shell.