Project 2a: The Unix Shell

Important Dates and Other Stuff

Due: Monday 2/19 by midnight.

This project is to be done by yourself.


Post questions to Piazza or send questions to or ask in person during lab help hours or office hours. If the question is about your code, copy all of of your code into your handin directory (details below) and include your login in your email (you are free to modify the contents of your handin directory prior to the due date). Also include all other relevant information, such as cutting and pasting what you typed and the results from the screen. In general, the more information you give, the more we can help. If you use Piazza for questions, don't include code unless you are sure you are making the post private.


In this assignment, you will implement a command line interpreter (CLI) or, as it is more commonly known, a shell.

A detailed description of the requirements is found here.

Hand In

Hand the code into directory p2a. There should be just two files: wish.c and a README. The README doesn't have to be long; it's just to get you in the habit of writing a little about your code.


There is another contest for the shell. In your previous contest, you had to write the fastest sort. Now, you have to write the shortest, completely working, readable shell. What do we mean by readable? Well, the code should not be short because you have removed all white space and made it so we cannot understand what the code does. Rather, it should be short because you have removed all unnecessary redundancy. We will count the code by the number of (non-whitespace) lines; we will then examine the best few entrants to see whose code is actually readable but compact, and then choose a winner. Winner, as usual, gets a FAMOUS 537 T-SHIRT. Good luck!


We will run your program on a suite of test cases, some of which will exercise your programs ability to correctly execute commands and some of which will test your programs ability to catch error conditions. More on the automatic test suite soon.