As beautiful as a coconut shell — and twice as hard to crack! (probably)
This project is a small Bash-like shell that can parse and execute user commands, handle built-in functions, manage environment variables, run external programs, and support pipes, redirections, and proper signal handling.
- Command parsing with single/double quotes,
$variable expansion, and$?exit status - Built-in functions:
echo(-n),cd,pwd,export,unset,env,exit - Environment variable management (from
environ, dynamic updates) - External program execution via
PATHlookup andexecve - Pipes (
|) with multi-stage chaining - Redirections:
<,>,>>,<<(heredoc with delimiter expansion control) - Signal handling:
SIGINT(Ctrl+C),SIGQUIT(Ctrl+) — parent ignores, children behave like Bash - Robust error handling and exit codes (126, 127, syntax errors)
These are optional and not required for the base project:
- Wildcard expansion — supports
*(matches any sequence in filenames) - Logical operators —
&&(and),||(or) with short-circuit evaluation - Subshells —
(cmd1 && cmd2)(Proper environment isolation WIP)
# Clone repo and enter
git clone https://github.com/SeanAndrie/bukoshell.git
cd bukoshell
# Initialize and update libft submodule
git submodule update --init --recursive
# Compile bukoshell
make
# Run bukoshell
./minishell