Shell in WebAssembly
“Shell” refers to the class of UNIX-like languages that are designed for interactive prompts and shell scripts. This includes sh (Borne Shell), bash (Borne Again Shell), csh (C Shell), and zsh (Z Shell) among others.
Unlike many of the languages in this guide, we assume that shell scripting using these languages is unlikely to be a desirable development experience. This is in part because, by nature, shell is designed to call and run other programs, which WebAssembly typically does not allow. However, we are starting to see some shell-like languages appear on the scene.
- WASI FS Access provides an example shell that works similarly to bash
- WebAssembly.sh is a basic shell integrated with Wasmer.
Both of the implementations above provide a shell-like in-browser experience.
Here are some great resources:
- RReverser’s blog post on writing a shell in Wasm
- Aaron Turner’s WebAssembly.sh - the actual program, not a resource