Builtins
Some commands must be implemented as shell builtins, so that they can mutate the shell state, a thing that would not be possible for an external program. A good example of such kind is the cd command, which must change the shell's working directory.
Hush currently provides the following builtin commands:
- cd TARGET_DIR: change the working directory to TARGET_DIR.
- exec PROGRAM [ARG1, ARG2, ARG3...]: replace hush process with PROGRAM (argument 0 = PROGRAM).
- exec0 PROGRAM ARG0 [ARG1, ARG2, ARG3...]: replace hush process with PROGRAM (argument 0 = ARG0).
- spawn0 PROGRAM ARG0 [ARG1, ARG2, ARG3...]: spawn PROGRAM (argument 0 = ARG0).
As Hush has no such thing as subshells, builtin commands may not be used in pipes, redirections, or capture blocks.