# Project 'Educational Bourne like Shell'



## naikon (Sep 30, 2009)

Hi there, I am submitting my project proposal soon and need something
feasible to submit. As I like C coding and UNIX, I intend on producing a shell
for practical and educational purposes. Documentation will be key.

The code will be altered and commented to serve anybody who wants
to learn about coding a shell. I intend on releasing it under a *BSD/MIT license.
The shell will not have a very extensive feature list.

Most implementations such as BASH are way too fat for me to
tackle given the time constraints. I have looked at sources for 'minishell'
and other personal shells, but they do not support important features.

I would appreciate if anybody could give some advice, as the only
source of readable code for a small shell(reasonably commented too)
seems to be the standard ash sh shell included with FreeBSD's userland.

http://www.freebsd.org/cgi/cvsweb.cgi/src/bin/sh/ - FreeBSD ash shell

http://heirloom.sourceforge.net/sh.html - Heirloom Bourne shell

I feel up to the task, because I don't want to get bored doing
some boring website project. Not all of the code seems trivial
though, so any links or general information pertaining to shell
development is appreciated.

One last point. I don't intend to just rip code, but I presume old
sources while simpler, would not be as useful? The sources
for FreeBSD ash stretch back to 1993!

Thanks for any suggestions fellow coders


----------



## john_doe (Sep 30, 2009)

You may want too look at dash, that's based on NetBSD version of ash. It has slightly better man page (*getopts* description) and *printf* builtin.





			
				&quot said:
			
		

> I have looked at sources for 'minishell'
> and other personal shells, but they do not support important features.


Can you explain what you consider as important features? e.g. chdir(), line editor, job control, command history, pathname expansion, parameter substitution, stdio redirection, etc.


----------



## bigearsbilly (Oct 2, 2009)

not being rude but do we need another shell?
I know it's easy for me to say, but how about something you could
do that might be useful to the community at large?

I know you are under time constraints to submit your project!
just a thought.


----------

