Due Tuesday, 05 Oct 1999, at the beginning of class.
Please revisit this document regularly. It may change as we learn more about implementation details.
The goal is to implement a very simple shell running under the Linux operating system.
Our simple shell's life consists of
Our shell will provide two features of more commonly used shells: it will execute commands with full pathnames and will run commands in the background.
The shell should support two features:
You need not worry about file redirection (<, >), quoting, control-z, or bg.
Among the system calls you may wish to know about include
Be sure to read the UNIX manual pages for fork(2), execve(2), exit(3), and wait(2) to learn their prototypes and necessary header files.
Optionally, you can extend your shell's features. For example, you can add backgrounding a process, searching for commands in a specified list, or file redirection. Go for it!
The bash WWW page briefly describes shells before going into bash specifics.
This is the first time this project has been assigned so difficulties will surely be encountered. As appropriate, I will post hints and explanations here as we learn them.
You can work in groups of up to two people. Grades will be assigned primarily according to correctness. Adequate documentation of the project and the code will assist in assigning partial credit. In class, we will discuss how to submit the project.