L'unico vero modo per spiegare tutti questi termini è con una lezione di storia.
Quindi iniziamo subito, con UNIX negli anni '70. Molto prima delle interfacce grafiche, la riga di comando è l'unica interfaccia per il sistema operativo. E dato che il centro di un sistema operativo è chiamato "kernel", alcuni dadi hanno deciso che lo strato esterno dovrebbe essere " shell ". I giochi di parole terribili rimangono un tema in UNIX.
Ancora oggi Terminal.app essenzialmente emula i terminali fisici utilizzati per accedere alle shell 40 anni fa. "Apriamo un terminale" invece di prendere una sedia, ma questo è davvero il cambiamento fondamentale.
Poiché UNIX è stato scritto dai programmatori, inizialmente per se stessi, hanno reso programmabile questa shell. Noi chiamiamo questi script - proprio come un attore può seguire uno script, così una shell può seguire uno " script di shell ". Di solito (si spera) non programmi a tutti gli effetti, ma un livello di automazione molto utile.
Molte parti di UNIX possono essere (e sono state) sostituite, inclusa la shell. Quindi, quando Stephen Bourne scrisse un sostituto per la shell di Ken Thompson, divenne la Bourne Shell - e quella di Ken, la Thompson Shell . E con il tempo, la conchiglia C (conchiglia? Molto delicata), la conchiglia Korn e così via.
A questo punto, " shell UNIX " diventa un termine generico per qualsiasi shell UNIX. Sebbene esistano differenze sintattiche tra loro, praticamente qualsiasi comando UNIX può essere scritto in qualsiasi shell UNIX. Quindi questo termine viene usato quando la differenza semplicemente non ha importanza. È abbastanza specifico da evitare confusione con ambienti non UNIX (qualcuno ricorda DOS Shell ?), Ma abbastanza generico che non ci interessa sh vs csh vs tsch vs ksh ...
Quando GNU venne a sostituire la Bourne Shell, chiamarono la sostituzione Bourne-Again Shell - "bash". Ultimo gioco di parole, lo prometto. Sebbene sia in realtà solo un'altra shell UNIX, è attualmente la più diffusa - ed è stata la più diffusa durante gli "anni del boom" di Linux e Internet. Quindi sentirai "comando", "comando UNIX", "comando terminale" e "comando bash" usati in modo intercambiabile, "shell UNIX" e "shell bash" usati in modo intercambiabile, ecc. Tuttavia, a causa delle differenze sintattiche tra i vari shells, quando dicono "bash script" di solito significano bash - e allo stesso modo, "shell script" di solito significa anche "bash script", se non diversamente specificato.