So I’m working on writing a shell in C a little bit. Before yesterday, I didn’t have a very clear idea of what writing a shell even meant. Here are some things that your shell has to do! I’m sure there are some Important Things missing.
- Parse what you type in to figure out which are the commands and which
are the arguments (
ls -la LICENSE)
ls file1 file2 file3 ...
- Pipes! If you write
ls | grep blah, it needs to send the output from
grep. And redirection too.
- Signal handling! If you press
Ctrl+C, it needs to send that signal to whatever process you’re running. Or something. I don’t really understand this yet.
- Process management! Lets you background and foreground jobs. (
- Shell scripting! (for loops and things)
And a thing the shell doesn’t have to do:
- Figure out which command to execute using the
execdoes that, apparently.
I think I’m going to work on implementing pipes & redirection & signal handling.