|
La
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)
|