Operating System Assignment : Build a Basic Shell in C

Job ID: 39704002

Budget: ₹600 – ₹1,500 INR

Hire: C Developer to Build a Minimal Linux Shell (C17)
Goal: Implement a bash-like shell in C (C17) that compiles on Linux (GCC ≥ 11) and passes an autograder. Single-file submission: shell.c No third-party libs (especially no readline).

Must-have features

Prompt exactly: MTL458 > (shown even for piped/non-interactive input)

Command exec via fork/execvp

Single pipe: cmd1 | cmd2

Single redirection per command: <, >, >> (no mixing with pipes)

Separators: ; (always), && (run next only on success) — bash-like behavior

Wildcard expansion (*) + ~ (can use wordexp)

Built-ins:

cd (supports cd, cd -, cd ., cd .., cd ~ and cd ~/path)

history and history n (oldest→newest, keep duplicates, cap 2048; if n > size, print all)

exit

Tab completion (TTY only): if exactly one filename matches, auto-complete

On any error: print Invalid Command

Constraints

Linux, GCC command: gcc -std=c17 -Wall -Wextra -O2 entrynumber_a1.c → default a.out

No readline or extra packages; standard C/POSIX only

Deliverables

shell.c (well-commented)

Short README (build/run instructions, features)

Nice to have

Familiarity with POSIX (pipe, dup2, termios) and precise I/O formatting for autograders

Apply with

Brief plan + timeline

Relevant C/POSIX samples (shells/parsers/tools)