If you wish to download this software, please visit the Sourceforge.net Project Page.
MiShell started as a lab assignment for my advanced operating systems class. I am releasing it under the GPL license as a pedagogical tool, as the only shells that I found available as references were convoluted C intended for strict portability or advanced shells based on "new shell concepts", e.g. fish. At the moment, MiShell consists of only one file, main.cpp. In the future, I will be adding a more intentional command parsing system (with a hand-written tokenizer) and adding some common functions to the shell, e.g. making rm into a subroutine rather than an external executable.
How should I use MiShell?
I would recommend that you give a copy of MiShell to your students and ask them to implement some feature that it does not have or to modify current behavior. For example, one could assign the students to add more built-in commands (e.g. ls would be very educational to implement). Another example would be to modify the semantic behavior of the shell, e.g. changing directories would require the command chdir dirName instead of the current cd dirName. Please let me know if you are using this shell for your class, I would like feedback on way to make it easier to utilize.
Sean Rae, aka evilsailor9 (email).