minishell.mp4
A shell is a user interface for accessing the services of an operating system. Put simply, a shell is the outermost layer of communication between the user and operating system. Allowing us to navigate and execute tasks in human-readable language.
In this project, we implemented many features that recreate a BASH.
Those include running executables from absolute or relative path, like /usr/bin/ls
or ls
, which are fetched from the environment PATH. It handles pipe redirection with as many commands as needed. It supports usage of quotes and single quotes -- including nested ones -- and environment variable expansion $
.
A few of the functions are "built-in", meaning we don't call the executable, but rather our own functions from inside the shell itself.
Ctrl-C
Ctrl-\
and Ctrl-D
to quit the program, in the same way as bash.
echo
, pwd
, cd
, env
, export
, unset
and exit
.
&&
, ||
with ()
and the wildcard *
- name: Show allways the PATH, like bash.
- quotes: If there are quotes to close, it will wait until closing.
- wildcard
*
: Works in all directories.
# Requirements: GNU Readline Library
# To install the readline library, open the terminal window and write
sudo apt-get install libreadline-dev
# Clone the project and access the folder
git clone https://github.com/RubenTeles/minishell && cd minishell/
# Compile the program
make
# Run the program
./minishell
# Write any shell command like
echo "hello minishell"
# Quit the program
exit
# Well done!