CustomShell is a versatile UNIX command line interpreter designed to streamline user interaction with the operating system. This shell offers an intuitive interface along with advanced functionalities for seamless command execution.
- Customized Shell: Developed to provide an enhanced user experience and facilitate interaction with the OS.
- Argument Handling: Ability to handle command lines with arguments for versatile command execution.
- PATH Management: Efficient handling of the PATH environment variable to locate executables.
- Built-in Commands:
exit
: Allows users to exit the shell seamlessly.env
: Displays the current environment variables.
This project fulfills the following mandatory tasks:
- README and Man Page: Provides comprehensive documentation for the shell's functionalities.
- Code Quality: Complies with the Betty style guide for clean and readable code.
- UNIX Interpreter: Implements a UNIX command line interpreter for efficient command execution.
- Built-in Functions: Implements the
exit
andenv
built-in commands. - Error Handling: Handles errors and edge cases efficiently for a robust shell.
- Handle PATH: Handles the PATH.
- Handle CMD ARGS: Handles the command line with arguments.
- Editors: Supported editors include vi, vim, and emacs.
- Compilation: Code compiles on Ubuntu 20.04 LTS using gcc, with specified options (-Wall -Werror -Wextra -pedantic -std=gnu89).
- Formatting: Code files adhere to the specified format and end with a newline character.
- README.md: Provides essential information about the project and its usage.
- Coding Style: Follows the Betty style guide to ensure code uniformity and readability.
- Memory Management: No memory leaks present within the shell.
- File Structure: Organized with no more than 5 functions per file and all header files include guarded.
- System Calls: Utilizes system calls judiciously and only when necessary, following best practices.
This README.md offers an overview of the CustomShell project, highlighting its key features, compliance with requirements, and credits to the project's author. It aims to provide users and contributors with a clear understanding of the shell's capabilities and structure.