REPOSITORY OVERVIEWLive repository statistics
★ 2Stars
⑂ 0Forks
◯ 0Open issues
◉ 2Watchers
47/100
OPENREPOHUB HEALTH SIGNALMixed signals
A transparent discovery signal based on current public GitHub metadata.
Recent activity35% weight
52 Community adoption25% weight
5 Maintenance state20% weight
100 License clarity10% weight
0 Project information10% weight
75 This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
README preview

Build and launch the project
make && ./minishell
Makefile rules

Reference Shell
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
bash --posix
Troubleshoot dependencies
sudo apt-get install libreadline-dev
Other details
-
Local variables have been implemented
-
To ensure efficient memory management, dynamically allocated memory is manually freed despite the presence of a garbage collector that only frees all memory at once in case of an unexpected program exit.
-
You can execute a command directly by using the "-c" option
./minishell -c [cmd]
- In order to closely mimic the behavior of bash, the signal handling in Minishell changes when launched with a redirect.
if (!isatty(STDIN_FILENO) || !isatty(STDERR_FILENO))
// Different signal behavior
// See : srcs/signals
| Relevant tests |
|---|
| Search and launch the right executable (based on the PATH variable or using a relative or an absolute path) |
ls |
.ls |
/ls |
ls -la |
/tmp |
/usr/bin/ls |
cp /usr/bin/ls ./lsCopy → lsCopy → ./lsCopy |
| Handle single quote and double quote |
echo '$PWD' |
echo "$PWD" |
echo '$''PW'D'' |
echo $PW''D'' |
echo ' << (not 'a' here-doc) > (nothing) ""<"" (nothing) >> (nothing)' |
| Implement redirection |
cat < Makefile > out.txt → cat out.txt |
cat < Makefile > out.txt → cat < Makefile >> out.txt → cat out.txt |
cat < thisFileDoesNotExist > out.txt |
touch noRights.txt → chmod 000 noRights.txt → cat < noRights.txt |
ls > $thisVariableDoesNotExist |
< < > >> |
>> < < < |
<< |
>> |
> |
< |
| Implement heredoc |
< Makefile << limiter |
cat << limiter < Makefile |
cat << limiter1 << limiter2 |
echo << limiter |
cat << limiter → $PATH (inside the heredoc) |
cat << "limiter" → $PATH (inside the heredoc) |
On this project, my teammate and I agreed that we would each make a Minishell. Here is my version.