Mascotte del sito Velociraptus: Benjamin
Interfaccia Grafica
Pagina Precedente

Pinguino in letturaLa shell negli ambienti Unix, e non fa eccezione Linux è un elemento fondamentale del sistema operativo. Solo chi sa usare correttamente questo ambiente può dire di conoscere unix/linux, altrimenti è un semplice utilizzatore. Passo a darne una definizione: la shell di un ambiente Unix, è un interprete a linea di comando che permette di interagire con il sistema operativo, impartendogli dei comandi di sistema fino a creare un programma vero e proprio, generalmente detto script.
Questa definizione merita qualche spiegazione. Prima di tutto per comandi di sistema si intendono tutti quei comandi forniti dal sistema operativo, ad esempio il caricamento di un programma, la data e l'ora, comandi di ricerca, ordinamento e così via.
Ogni programma unix è creato per essere caricato dalla shell, quindi è predisposto per questo, ed ha una notevole flessibilità offrendo la possibilità di essere parametrizzato.
Attraverso la parametrizzazione è possibile guidare un'applicazione unix, nell'input, nell'esecuzione e nell'output. Una pratica comune è quella di creare delle "pipe". Dei "tubi" tra applicazioni, l'output di una è l'input per un'altra, e questo si può fare solo attraverso la shell.
Nella definizione si dice che: "la shell è un interprete a linea di comando", questo significa che è essa stessa un programma che interpreta altri programmi o semplicemente comandi, quindi non è necessariamente unica, e infatti nella realtà esistono varie shell, ma i concetti fondamentali -iterazione con il sistema, programmabilità, interfaccia a caratteri- rimangono per tutte uguali. Le shell più famose sono: bash ( Bourne Again Shell), sh, tclsh e tcsh e molte altre. Io descriverò in seguito ampiamente la shell bash, che è in pratica quella standard per ogni sistema unix.
Per programmabilità si intende che l'interprete offre un certo numero di strutture di controllo, costanti e variabili tipiche di ogni linguaggio di programmazione.
La shell deve essere necessariamente a linea di comando per offrire la flessibilità necessaria, molti ambienti di tipo visuale, quali windows e macos hanno delle utility con l'obbiettivo di fornire qualcosa di simile, non arrivando mai alle potenzialità della shell unix, non per l'incapacità di creare un interprete così potente, ma per come sono creati i programmi applicativi. Nell'ambiente unix, fin dall'inizio era presente la shell, anzi era il solo modo per interagire con il sistema operativo, i programmi erano creati da programmatori per altri programmatori, quindi enorme flessibilità ed un occhio di riguardo per la programmabilità. Per questo motivo se si guardano i parametri di caricamento di un qualsiasi programma se nè trovano almeno una decina. Tutto questo non vale per i sistemi operativi con interfaccia grafica, i cui utenti avendo scelto questo modello non vogliono di certo la programmabilità, l'obbiettivo per le applicazioni in questi ambienti è l'usabilità da parte di qualsiasi utente.
Se dovessi scegliere uno degli elementi distintivi tra un sistema unix e gli altri, quello descritto sopra sarebbe uno tra quelli fondamentali.

Comandi fondamentali (in breve)

Created by Antonio Gallonetto