shell implemented in c