# Shell Unix

La shell unix (Unix-Shell, abbreviato anche shell) è l'interfaccia utente dei sistemi Unix e Unix-like. Tale interfaccia è di tipo testuale: in essa, l'utente può immettere dei comandi di testo, che vengono interpretati e inviati al sistema: anche l'output di testo è mostrato nella stessa interfaccia. Si parla dunque di "interprete a linea di comando", termine introdotto da Louis Pouzin negli anni 1964/65 a proposito dei concetti cardine dell'implementazione del sistema Multics.

## Descrizione

Di norma, l'utente Unix ha la possibilità di scegliere diversi tipi di Shell. Tipicamente, da shell sono eseguibili diversi linguaggi di script, anche complessi (Perl, awk, eccetera): questo uso permette tipicamente di automatizzare le attività e i job dell'utente nella gestione del proprio computer, o nella gestione di un server acceduto da altri utenti e applicazioni remote.
Una tipologia standard e di uso comune di interprete di shell unix, in particolare su Linux, è la "bash-shell" (come viene comunemente chiamata la Bourne-Shell), che permette di eseguire operazioni di base quali la navigazione del file system (ad esempio, con i comandi cd, ls e così via), la connessione a host remoti e l'avvio di script, sia nel linguaggio nativo di scripting della shell stessa (aventi questi estensione .sh) che in altri linguaggi (come ad esempio Python, con estensione .py), nonché l'esecuzione di applicazioni di utilità, come ad esempio gli editor di testo.
L'interfaccia shell dei computer Apple è tipicamente chiamata Terminale (Terminal nell'originale inglese): tale denominazione è entrata comunque anche nel gergo di alcune distribuzioni di Linux.
Al momento dell'apertura della shell, viene visualizzato il Prompt dei comandi, che segnala la posizione dove è possibile per l'utente immettere le istruzioni da interpretare dalla shell (ad esempio, nella bash è un $). È tipicamente presente la visualizzazione del nome dell'utente corrente: questo permette anche di adattare le operazioni da fare a seconda dei privilegi, connessi all'identità dell'utente stesso, con cui si sta operando.
I linguaggi utilizzabili da shell tipicamente consentono l'utilizzo dei cicli condizionati, delle iterazioni, della definizione di variabili locali per l'elaborazione dei cicli, la scrittura in output di messaggi di testo (in bash: $echo), i commenti al codice (in bash, per i commenti su una riga: #). È abbastanza comune l'avvio di operazioni da eseguire periodicamente tramite la funzione cron/crontab tipicamente in uso nei sistemi Unix.
Altri esempi di tipi di shell comunemente utilizzate sono: osh (Thompson-Shell), bash (Bourne-Shell), csh (C-Shell), ksh (Korn-Shell), ash (Almquist-Shell), esh (easy-shell, orientata all'esecuzione del linguaggio Lisp).

### Esempi di utilizzo dei bash

Esempio di esecuzione di un semplice calcolo tramite shell (il carattere $, se posto a inizio riga, indica il prompt del comando, mentre la riga successiva riporta l'output dell'esecuzione del comando stesso):
Esempio di combinazione di comandi: nella prima istruzione, l'output del comando di sistema operativo date viene memorizzato (tramite l'operazione di assegnamento, con l'utilizzo di "=") in una variabile creata ad hoc e chiamata data_di_oggi, nella seconda istruzione il valore (indicato con il carattere riservato $, che precede il nome della variabile) di tale variabile viene visualizzato nella shell.