shell.c functional