|
Minishell 1.0
42 School Minishell Project - A simple shell implementation
|

Minishell, 42 Okulları müfredatında yer alan ve bir işletim sistemi kabuğunun (shell) arkasında yatan karmaşık mekanizmaları (process yönetimi, lexer/parser, ortam değişkenleri vb.) minimal ancak eksiksiz bir şekilde klonlamayı hedefleyen bir C projesidir.
Projenin derleyici ve yorumlayıcı mantığı klasik "Frontend/Backend" tasarım desenine benzer 4 temel bloktan oluşur:
| Modül | İşlev | İçerik Özeti |
|---|---|---|
| Lexer | Sözcük Analizi | Düz metni "Token"lara (kelime, özel karakter, pipe, redirect) böler. |
| Parser | AST (Sözdizimi) Ağacı | Token zincirini, öncelik sırasına göre Abstract Syntax Tree'ye çevirir. |
| Expander | Değişken Genişletme | $ENV değişkenlerini okur, wildcard (*) joker işlemlerini temizler. |
| Executor | Çalıştırma | AST'yi adım adım gezip Pipes, Child Proc'lar ve Built-in leri yürütür. |
Bu Minishell versiyonu, gerçek Bash deneyimine en yakın olması için şunları içerir:
Projeyi sisteminizde oluşturmak ve çalıştırmak kütüphaneler (libft ve readline) ile birlikte otomatik olarak make ile halledilir.
Bu proje, kendi mimarisinin detaylarını anlamak isteyen geliştiriciler ve değerlendiriciler için, Doxygen tabanlı detaylı bir HTML dökümüyle gelir. Sistem üzerinde tüm objelerin birbirini nasıl çağırdığını görmek için Graphviz tabanlı akış şemaları içerir.
Not: 3001 portunu kullanan sunucuyu sonlandırmak için komut ekranında Ctrl + C tuş kombinasyonunu kullanabilirsiniz.