[Our shell gives the ability to view a user's shell info, execute simple commands, check if errors exist in commands, and run commands concurrently in the background. ]
- Roderick Shaw: rks21b@fsu.edu
- Fernando Parra: fap20g@fsu.edu
- Sofia Sanchez: srs20h@fsu.edu
- Responsibilities: [Print the user, machine, and path info from their envirnoment.]
- Assigned to: Roderick Shaw
- Responsibilities: [Parse all environment variables appropriately]
- Assigned to: Fernando Parra, Roderick Shaw, Sofia Sanchez
- Responsibilities: [Parse ~ as a home environment variable]
- Assigned to: Fernando Parra, Roderick Shaw, Sofia Sanchez
- Responsibilities: [Find proper paths for each command]
- Assigned to: Fernando Parra, Roderick Shaw, Sofia Sanchez
- Responsibilities: [Execute each command by forking them]
- Assigned to: Fernando Parra, Roderick Shaw, Sofia Sanchez
- Responsibilities: [Allow execution functionally with files as input and output]
- Assigned to: Fernando Parra, Roderick Shaw, Sofia Sanchez
- Responsibilities: [Allow piping execution]
- Assigned to: Fernando Parra, Roderick Shaw, Sofia Sanchez
- Responsibilities: [Let commands run concurrently by executing commands w/ '&' in the background]
- Assigned to: Fernando Parra, Roderick Shaw, Sofia Sanchez
- Responsibilities: [Implement 3 commands: exit, cd PATH, and jobs]
- Assigned to: Fernando Parra, Roderick Shaw, Sofia Sanchez
- Responsibilities: [Implement mytimeout command]
- Assigned to: Fernando Parra, Roderick Shaw, Sofia Sanchez
- Responsibilities: [Optional code if we have time to implement them]
- Assigned to: Nobody
- Responsibilities: [Print the user, machine, and path info from their envirnoment.]
- Assigned to: Roderick Shaw, Fernando Parra
- Responsibilities: [Parse all environment variables appropriately]
- Assigned to: Fernando Parra
- Responsibilities: [Parse ~ as a home environment variable]
- Assigned to: Fernando Parra
- Responsibilities: [Find proper paths for each command]
- Assigned to: Sofia Sanchez
- Responsibilities: [Execute each command by forking them]
- Assigned to: Roderick Shaw
- Responsibilities: [Allow execution functionally with files as input and output]
- Assigned to: Sofia Sanchez
- Responsibilities: [Allow piping execution]
- Assigned to: Fernando Parra
- Responsibilities: [Let commands run concurrently by executing commands w/ '&' in the background]
- Assigned to: Roderick Shaw
- Responsibilities: [Implement 3 commands: exit, cd PATH, and jobs]
- Assigned to: Fernando Parra
- Responsibilities: [Implement mytimeout command]
- Assigned to: Sofia Sanchez
- Responsibilities: [Optional code if we have time to implement them]
- Assigned to: Fernando Parra
shell/
│
├── src/
│ |── shell.c
│ |── bgProcessor.c
│ |── envirVar.c
│ |── mytimeout/
| | └── mytimeout.c
│ |── ioRedirection.c
│ |── lexer.c
│ |── listOfCommands.c
│ |── pathSearch.c
│ |── piping.c
│ └── prompt.c
│
├── include/
│ |── lexer.h
| └── bgProcessor.h
│
├── README.md
└── Makefile
- Compiler: gcc -std=c99 nameOfFile -o whatYouWantTheExecutableToBeNamed
- Dependencies: None needed to be downloaded
make all
This will build both executables with the makefile and shoves the appropriate contents into the other folders in this directory. You must create the bin, obj, and obj2 folders in the same directory.
make run
./bin/shell
This will run the shell program and start off with a slightly different prompt than before. However, this will not create the mytimeout executable. Use make all and then bin/shell to get back into the shell executable.
- Bug 1: Printing out commands in BGP isn't working properly.
- Bug 2: Piping doesn't seem to be going into the background.
- Bug 3: Exit doesn't always work (inconsistent)
- Extra Credit 1: [Support unlimited number of pipes]
- Extra Credit 2: [Shell-ception]
[Tilde expansion, external command execution, and internal commands are inside shell.c because they were too small for another file.]