The shell runs a program by asking init to load it (init alone may create processes), then gives the program the terminal as its output and a read-only storage grant to the current directory, writes its arguments onto a page it moves into the program, starts it and waits for it to die. Then it takes the grant back. Built-ins: help, echo, clear, cd, pwd. Anything else is a program on disk: `name args...` runs name.elf.