sh vs bash: un riassunto

Apr 18, 2021
admin

Se state leggendo questo articolo, c’è una buona probabilità che abbiate incontrato i termini shell, sh, bash ecc. in passato. Questi termini possono confondere e poiché sono strettamente correlati, il problema è ancora più grave. Così ho deciso di scrivere questo post con l’obiettivo di provare a spiegare le differenze tra loro.

Shell vs Kernel

Prima di andare avanti è importante capire cosa significano i termini shell e kernel.

Kernel

Il kernel è il centro del sistema operativo. È responsabile di fare cose come interagire con l’hardware, fare I/O su file e generare processi.

Shell

La shell funge da interfaccia tra l’utente e il kernel. Tecnicamente parlando, una shell è un interprete della linea di comando, cioè il programma che interpreta il comando inserito nell’emulatore di terminale (modalità interattiva) o elabora gli script di shell (file di testo contenenti comandi).

Ora che abbiamo un’idea di cosa siano la shell e il kernel, possiamo provare a capire sh e Bash.

sh

In senso stretto, sh (o il linguaggio dei comandi della shell) è un linguaggio di programmazione descritto dallo standard POSIX. La chiave qui è che sh non è realmente un linguaggio di programmazione in sé. È solo una specifica. La specifica è una descrizione dettagliata della sintassi e della semantica di quel linguaggio. La specifica non include un’implementazione.

Bash

Ci sono diversi sistemi operativi con le proprie shell e kernel. Bash è la shell del sistema operativo GNU. Ma possiamo anche dire che bash è un linguaggio di programmazione.

Aspetta, non ti confonde? Bash è sia una shell che un linguaggio di programmazione?

Pensate a Python. Possiamo anche avviare Python in modalità interattiva e si comporta come una shell. O JavaScript, o Ruby o qualsiasi linguaggio di scripting.

Ha senso?

Quindi bash è un linguaggio di programmazione che può essere pensato come un’implementazione di sh (anche se questo è cambiato nel tempo).

Per riassumere, sh è una specifica, bash è l’implementazione.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.