Skip to content
A basic shell. Written in C
Branch: master
Clone or download
Latest commit c2fa8ba Feb 1, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
images Update description in general as well as tests Feb 3, 2017
tests Update description in general as well as tests Feb 3, 2017
Cshell Push submitted version Jan 30, 2017
LICENSE Create LICENSE Feb 1, 2018


A shell implemented in C. Written as a part of Operating Systems (CS39002) coursework.



The following functions have been written explicitly in C.

  • cd - Change directory

  • pwd - Present Working directory

  • mkdir

    - Make a directory (Alerts if already exists)

  • rmdir

    - Remove the directory (Alerts if no such file or directory)

  • ls - List contents of pwd


  • ls -l - List the contents in long listing format


  • cp - Copy contents of file1 to file2; only if file1 was more recently modified. Create file2 if not present already.

  • exit - Exit the shell ; also works for z

  • Supports running the execuables (predominanatly, ./a.out and scripting commands, like touch, cat, python )

  • Any path added to your $PATH folder will work. [Refer to function runprocess in shell.c]

  • Support background execution such as python & - returns its PID.

  • Input from and output to files, such as ./d < in.txt and ./inc > in.txt supported. (Both can work simultaneously.)

  • Support piping upto 2 levels - such as ./inc | ./d and ./inc | ./d | ./t


make clean

Output : images/exec

The test cases are present in tests folder.

run.c creates a child process to execute shell.c in a gnome-terminal, suited for debuggging. In case the terminal session is to be viewed in the continuing session, execution is as :

make clean

Known issues

  • gcc and grep don't work for some freaking reason. Most of the other commands like cat, touc, gedit, atom work but these 2 seem to hold a grudge against me.

  • support piping with system calls.

You can’t perform that action at this time.