Skip to content

A personal implementation of a minimal Linux shell

License

Notifications You must be signed in to change notification settings

almayor/minishell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

minishell

This project is part of the official curriculum at School 42.

Disclaimer

In School 42, almost every project must be written to comply with a coding standard (also known as the "Norm"). As a result, the implementation of certain parts may appear strange.

Overview

  • Official instructions
  • A personal implementation of a Linux shell with minimal functionality
    • builtins: cd, env, setenv, unsetenv, echo, exit
    • separation of commands with ;
    • management of SIGINT and SIGTERM
    • an informative user prompt
  • Only the following functions are allowed
    • malloc, free
    • access
    • open, close, read, write
    • opendir, readdir, closedir
    • getcwd, chdir
    • stat, lstat, fstat
    • fork, execve
    • wait, waitpid, wait3, wait4
    • signal, kill

Run

To compile, run

git clone https://github.com/almayor/minishell
cd minishell
git submodule --init --recursive
make

You can run unit tests with make test

Resources

Acknowledgements

We are grateful to the entire team behind School 42 and its Moscow branch, as well as to my fellow students for help and support.


If you have any questions, please contact me on Github.