There is more to writing a shell than simply reading commands and executing them after fork()ing. TTY handling must be done right¹ and interrupt and signal handling is rather tricky to get right as well².<p>(Not to mention, of course, that a Unix shell is very cumbersome to use without pipes and redirection. EDIT: Pipes are implemented, but not redirection?)<p>1. <a href="http://www.linusakesson.net/programming/tty/" rel="nofollow">http://www.linusakesson.net/programming/tty/</a><p>2. <a href="https://www.cons.org/cracauer/sigint.html" rel="nofollow">https://www.cons.org/cracauer/sigint.html</a>