sh vs bash : Un rezumat
Dacă citiți aceste rânduri, există o mare probabilitate să fi întâlnit în trecut termenii shell, sh, bash etc. Acești termeni pot părea confuzi și cum sunt strâns legați între ei, acest lucru face ca problema să fie și mai gravă. Așa că am decis să scriu această postare cu scopul de a încerca să explic diferențele dintre ei.
Shell vs Kernel
Înainte de a merge mai departe este important să înțelegem ce înseamnă termenii shell și kernel.
Kernel
Kernel-ul este centrul sistemului de operare. Este responsabil pentru a face lucruri cum ar fi interacțiunea cu hardware-ul, efectuarea de I/O de fișiere și generarea de procese.
Shell
Shell-ul acționează ca o interfață între utilizator și kernel. Din punct de vedere tehnic, un shell este un interpretor de linie de comandă, adică programul care fie interpretează comanda pe care o introduceți în emulatorul de terminal (modul interactiv), fie procesează scripturile shell (fișiere text care conțin comenzi).
Acum că avem o idee despre ce sunt shell-ul și kernel-ul, putem încerca să înțelegem sh și Bash.
sh
Strict vorbind, sh (sau Shell Command Language) este un limbaj de programare descris de standardul POSIX. Cheia aici este că sh nu este cu adevărat un limbaj de programare în sine. Este doar o specificație. Specificația este o descriere detaliată a sintaxei și a semanticii acelui limbaj. Specificația nu include o implementare.
Bash
Există diferite sisteme de operare cu propriile shell-uri și kernel. Bash este shell-ul pentru sistemul de operare GNU. Dar putem spune, de asemenea, că Bash este un limbaj de programare.
Așteptați, nu este confuz? Este bash atât un shell cât și un limbaj de programare?
Gândiți-vă la python. Putem să pornim Python și în modul interactiv și se comportă ca un shell. Sau JavaScript, sau Ruby sau orice alt limbaj de scripting.
Trece sens?
Deci bash este un limbaj de programare care poate fi considerat ca o implementare a lui sh (deși acest lucru s-a schimbat cu timpul).
Pentru a rezuma, sh este o specificație, bash este implementarea.
.