Simple_shell is a command line interpreter, or shell, in the tradition of the first Unix shell written by Ken Thompson in 1971. This shell is intentionally minimalistic, yet includes the basic functionality of a traditional Unix-like command line user interface.
Standard functions and system calls employed in simple_shell include:
access, execve, exit, fork, free, fstat, getline, malloc, perror, signal, stat, wait, write.
- man_1_simple_shell - Manual page for the simple_shell
- shell.h - program header file
- builtins.c - major builtin functions
check_for_builtins
- checks to see if the user's command matches a builtinnew_exit
- exits the shell with the option of a specified status_env
- prints the shell's environment variables to the standard outputnew_setenv
- initializes a new environment variable, or modifies an existing onenew_unsetenv
- removes an environment variable
- builtins2.c - helper functions for the builtins
add_key
- creates a new environment variablefind_key
- finds an environment variable in the environment arrayadd_value
- creates a new environment variable string_atoi
- converts a string into a non-negative integer
- environment.c - functions related to the environment
make_env
- creates the shell's environment from the parent processfree_env
- frees the shell's environment
- errors.c - functions related to printing errors
print_error
- prints an error message to the standard error_puts2
- prints a string to the standard error_uitoa
- converts an unsigned integer to a string
- memory_allocation.c - memory allocation functions
_realloc
- a custom realloc function for arrays of pointers
- new_strtok.c - custom strtok and helper functions
check_match
- checks if a character matches any in a stringnew_strtok
- a custom strtok for the shell
- path.c - functions related to executing commands
path_execute
- executes a command in the PATHfind_path
- finds the PATH environment variablecheck_for_path
- checks if the command is in the PATHexecute_cwd
- executes a command with an absolute pathcheck_for_dir
- checks if the command contains an absolute path
- simple_shell.c - essential functions to the shell
main
- the main function of the programsig_handler
- handles SIGINT
- strfunc.c - functions related to string manipulation
_puts
- writes a string to standart output_strdup
- duplicates a string_strcmpr
- compares two strings_strcat
- concatenates two strings with a/
in the middle_strlen
- calculates the length of a string
- tokenize.c - tokenizing function
tokenize
- creates an array of tokens from a buffer with a specified delimiter
simple_shell is designed to run in the Ubuntu 14.04 LTS
linux environment and to be compiled using the GNU compiler collection v. gcc 4.8.4
with flags-Wall, -Werror, -Wextra, and -pedantic.
The simple_shell is designed to execute commands in a similar manner to sh, however with more limited functionality. The development of this shell is ongoing. The below features will be checked as they become available (see man page for complete information on usage)
Evarest Orizu | GitHub