Day 1: What does a shell even do?
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) - expand
ls *intols file1 file2 file3 ... - Pipes! If you write
ls | grep blah, it needs to send the output fromlsintogrep. 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. (
Ctrl+zandfgandbg) - Shell scripting! (for loops and things)
And a thing the shell doesn’t have to do:
- Figure out which command to execute using the
$PATHenvironment variable.execdoes that, apparently.
I think I’m going to work on implementing pipes & redirection & signal handling.