Una shell è un tipo di programma per computer che consente all’utente di controllare il sistema operativo tramite un’interfaccia a riga di comando (CLI) o un’interfaccia grafica (GUI). In sostanza, le shell sono modi diretti per comunicare al sistema operativo le azioni da eseguire, di solito attraverso l’automazione. Queste azioni possono andare dai backup giornalieri al monitoraggio dei sistemi e delle attività, fino all’esecuzione di audit di routine.
Shell e kernel
Non si può parlare di shell senza prima capire come si differenziano dai kernel. In parole povere, i kernel sono gli aspetti fondamentali di un sistema operativo. È il livello principale tra l’hardware e i software del computer, con il kernel responsabile dell’interazione con l’hardware.
Le shell sono il punto di connessione intermedio tra l’utente e il kernel. Eseguono i comandi impartiti dall’utente al kernel, traducendo prima i comandi dell’utente in chiamate di sistema che richiedono al kernel di eseguire un compito specifico. Per questo motivo le shell vengono talvolta definite interpreti di comandi; interpretano ciò che chiedi in modo che il kernel possa capire cosa fare successivamente.
Come funziona un programma shell?
Una shell può essere una CLI o una GUI e non deve essere confusa con un terminale. Un terminale fornisce un prompt di comandi per lavorare con una shell, ma la shell stessa utilizza lo shell scripting per impostare l’automazione. Per esempio, in un dispositivo Windows, il terminale predefinito si chiama Prompt dei comandi (rispetto ai dispositivi macOS, in cui si chiama Terminale) e si presenta così:
L’uso del Prompt dei comandi di Windows può essere relativamente semplice, ma oggi un numero sempre maggiore di utenti utilizza PowerShell, una shell a riga di comando e un linguaggio di scripting molto più completi, per eseguire le azioni desiderate. Tieni presente che il Prompt dei comandi non è una shell, ma il terminale in cui è possibile eseguire una shell, come PowerShell. PowerShell può avere questo aspetto:
Come puoi vedere, fornisce le informazioni necessarie in modo rapido e semplice, a seconda del comando. PowerShell può essere eseguito su qualsiasi sistema operativo, anche se viene utilizzato principalmente sui dispositivi Windows.
Vuoi imparare le basi di PowerShell in soli 30 minuti?
Iscriviti a questo corso intensivo on-demand.
È bene notare che gli script di shell non sono chiamati nello stesso modo in tutti i sistemi operativi. Per esempio, alcuni script possono essere chiamati Sh, Bash, csh e tesh. Nei sistemi operativi VM di IBM si chiamano EXEC, mentre gli script di shell in ambiente DOS sono chiamati file batch.
In ogni caso, tutte le shell utilizzano un terminale per visualizzare comandi leggibili dall’uomo ed eseguire l’interazione o l’operazione desiderata.
Diversi tipi di shell
Bourne shell
La Bourne shell, talvolta indicata come la shell Unix originale e abbreviata in “sh”, è stata sviluppata nel 1979 da Stephen Bourne. Contiene funzionalità come il controllo di flusso e una migliore gestione delle stringhe, che rendono la shell più facile da usare e da capire come linguaggio di programmazione. Tuttavia, questa shell è nota per essere poco flessibile e poco interattiva.
Anche se è stata sostituita dalla C Shell e dalla KornShell (tra le altre), la Bourne shell rimane ancora oggi popolare per la sua velocità e compattezza.
Riga di comando (C Shell)
La C Shell (“csh”) è una shell di comando per Unix e sistemi Unix-like. È stata creata nel 1978 dalla Berkeley Software Distribution e offre diversi miglioramenti rispetto alla precedente Bourne Shell, soprattutto per l’uso interattivo.
Può avere un aspetto simile a questo:
KornShell
I Bell Labs introdussero KornShell (“ksh”) all’inizio degli anni Ottanta. Include molte caratteristiche della C shell, ma è notevolmente più veloce. Oltre a eseguire script Bourne Shell e funzioni simili a C, dispone anche di aritmetica integrata.
GNU Bourne-Again shell
La Bourne-Again shell (“bash”), rilasciata nel 1989 da Brian Fox per il Progetto GNU, è un’alternativa open source alla Bourne Shell. È paragonabile a KornShell e C Shell, ma include tasti freccia mappati automaticamente per modifica e richiamo dei comandi più rapidi. Bash è oggi considerata la shell predefinita per la maggior parte delle distribuzioni Linux e utilizza il Bash scripting.
Cosa fa lo shell scripting?
Invece di digitare manualmente ogni comando ogni volta che hai bisogno di fare qualcosa, le shell, grazie al loro scripting, possono eseguire diverse attività contemporaneamente, come backup, esecuzione di programmi, ecc. Possono anche automatizzare le attività ripetitive, riducendo la probabilità di errore umano, minimizzando l’impatto potenziale dei dirty data e migliorando in modo significativo l’efficienza IT.
Detto questo, gli shell script non sono progettati per compiti complessi o su vasta scala. Inoltre, come succede per le lingue, possono richiedere del tempo per essere padroneggiati. Una imperfezione di sintassi, per esempio, può causare errori importanti, e dovrai esaminare ogni comando per capire dove si è verificato l’errore.
Vantaggi della shell
Utilizzare shell può permettere ai tecnici IT di avere più tempo per concentrarsi su progetti maggiormente strategici. Oltre ad aiutarti a svolgere diverse attività, le shell ti consentono anche di personalizzare i tuoi script in base agli obiettivi e alle esigenze specifiche.
Svantaggi delle shell
Le shell possono essere impegnative dal punto di vista della sintassi. Un singolo errore può essere difficile da identificare e costoso nel lungo periodo. Per chiarire, la sintassi delle shell è simile a quella utilizzata nel linguaggio naturale. Si riferisce all’ordine delle operazioni e alla disposizione di parole e frasi.
Shell per una maggiore efficienza IT
Le shell e, di conseguenza, il relativo shell scripting potrebbero non essere la prima cosa a cui pensi quando stai valutando soluzioni di endpoint management. Tuttavia, le shell svolgono un ruolo essenziale nel modo in cui i tecnici IT possono automatizzare le attività e fornire un servizio migliore a te, alla tua organizzazione e ai tuoi utenti finali. Anche se non è necessario padroneggiare le shell, dovresti comunque comprenderne le basi per ottenere risultati aziendali migliori.