Coding a shell from scratch using low level C was one of the most powerfull project I made, constructing all those building block of a shell from parsing commands through forking process creation and synchronisation, managing pipes and executing it. ✨
it's called wesh shell. aka Wesh a sat
Minishell runs executables from an absolute, relative or environment PATH (/bin/ls
or ls
), including arguments or options. '
and "
work the same as bash.
You can separate commands with ;
, as well as use redirections >
>>
<
and pipes |
.
Environment variables are handled, like $HOME
, including the return code $?
.
Finally, you can use Ctrl-C
to interrupt and Ctrl-\
to quit a program, as well as Ctrl-D
to throw an EOF, same as in bash.
A few of the functions are "built-in", meaning we don't call the executable, we re-coded them directly. It's the case for echo
, pwd
, cd
, env
, export
, unset
and exit
.
You can use arrow keys to edit commands and iterate through last executed ones (history
). managed with termcap
f0rkr@shell$ make
f0rkr@shell$ ./minishell
wsh :: /Users/f0rkr/Documents/minishell » wesh a sat