Loading...

Build your own Shell

Learn about parsing shell commands, executing programs and more

Start Building
shell
Kotlin
shell
C
shell
C++
shell
Java
shell
Go
shell
Python
shell
Rust
shell
Zig
shell
C#
This challenge is free until 1 January 2025!

A shell is a command-line interface that executes commands and manages processes. In this challenge, you'll build your own POSIX compliant shell that's capable of interpreting shell commands, running external programs and builtin commands like cd, pwd, echo and more.

Along the way, you'll learn about shell command parsing, REPLs, builtin commands, and more.

Stages

Print a prompt
Login via GitHub to view this stage
Handle invalid commands
Login via GitHub to view this stage
REPL
Login via GitHub to view this stage
The exit builtin
Login via GitHub to view this stage
The echo builtin
Login via GitHub to view this stage
The type builtin: builtins
Login via GitHub to view this stage
The type builtin: executable files
Login via GitHub to view this stage
Run a program
Login via GitHub to view this stage

Navigation

The pwd builtin
Login via GitHub to view this stage
The cd builtin: Absolute paths
Login via GitHub to view this stage
The cd builtin: Relative paths
Login via GitHub to view this stage
The cd builtin: Home directory
Login via GitHub to view this stage

Quoting

Single quotes
Login via GitHub to view this stage
Double quotes
Login via GitHub to view this stage
Backslash outside quotes
Login via GitHub to view this stage
Backslash within single quotes
Login via GitHub to view this stage
Backslash within double quotes
Login via GitHub to view this stage
Executing a quoted executable
Login via GitHub to view this stage