A Unix-like shell built from scratch in C to explore operating system fundamentals, process management, command execution, and shell internals.
NovaShell is a custom command-line shell developed from scratch in C as part of a deep dive into systems programming and operating system concepts.
The project aims to recreate the core functionality of modern Unix shells while providing hands-on experience with:
- Process creation and management
- System calls
- File descriptors
- Pipes and redirection
- Signal handling
- Command parsing
- Job control
- Shell architecture
Rather than treating the terminal as a black box, NovaShell explores how shells actually work internally.
- Interactive shell prompt
- Command parsing
- External command execution
- Built-in commands
- Error handling
- Input/Output Redirection (
>,<,>>) - Pipes (
|) - Environment Variables
- Command History
- Tab Completion
- Job Control
- Background Processes (
&) - Signal Handling
- Custom Configuration File
- Shell Scripting Support
User Input
β
βΌ
Command Parser
β
βΌ
Tokenizer
β
βΌ
Command Dispatcher
β
βββββ΄βββββββββββ
βΌ βΌ
Built-ins External Commands
β
βΌ
fork()
β
βΌ
execvp()
NovaShell/
β
βββ src/
β βββ main.c
β βββ parser.c
β βββ executor.c
β βββ builtins.c
β βββ utils.c
β
βββ include/
β βββ parser.h
β βββ executor.h
β βββ builtins.h
β
βββ docs/
β
βββ tests/
β
βββ Makefile
βββ README.md
βββ LICENSE
- C
- GCC
- POSIX APIs
- Linux System Calls
- Make
NovaShell demonstrates understanding of:
- Operating Systems
- Systems Programming
- Process Management
- Fork-Exec Model
- Inter-Process Communication
- File Descriptors
- Unix Architecture
- Shell Design
- Memory Management
gcc --version
make --versiongit clone https://github.com/YOUR_USERNAME/NovaShell.git
cd NovaShellmake./novashellNovaShell> pwd
/home/user
NovaShell> ls
src include README.md
NovaShell> echo Hello World
Hello World
NovaShell> mkdir test- REPL Loop
- Command Parsing
- Process Execution
- Pipes
- Redirection
- Environment Variables
- Job Control
- Signal Handling
- Command History
- Shell Scripting
- Auto Completion
- Plugin System
This project was created to gain practical experience with:
- Linux Internals
- POSIX Programming
- Process Scheduling
- Shell Architecture
- Systems-Level Software Development
- The Linux Programming Interface
- Advanced Programming in the UNIX Environment
- POSIX Documentation
- Build Your Own Shell (CodeCrafters)
- Linux Man Pages
Contributions, suggestions, and discussions are welcome.
Feel free to open an issue or submit a pull request.
Licensed under the MIT License.
β If you find this project interesting, consider giving it a star.