Capitolo 5 Shell

Sommario
5.1 Comandi built-in
5.2 Variabili di ambiente
5.3 La shell Bourne, sh
5.4 La shell C, csh
5.5 Controllo dei job
5.6 History
5.7 Cambiare la propria shell

La shell, che sta tra l'utente e il sistema operativo, opera come un interprete di comandi. Legge l'input dal terminale e traduce i comandi in azioni, azioni che vengono intraprese dal sistema. La shell è simile al command.com in DOS. Una volta effettuato il login nel sistema, viene assegnata la shell di default. La shell, al suo avvio, legge i suoi file di inizializzazione e può settare alcune variabili di ambiente, i path di ricerca dei comandi, gli alias dei comandi ed eseguire qualche comando specificato in questi file.

La prima shell è stata la shell Bourne, sh(1). Ogni piattaforma Unix dispone della shell Bourne o di una shell Bourne compatibile. Questa shell ha molte buone caratteristiche per controllare l'input e l'output, ma non è molto adatta all'utente interattivo. Per andare incontro a quest'ultimo è stata scritta la shell C, csh(1), presente ora in molti, ma non tutti, i sistemi Unix. Questa shell usa una sorta di sintassi C, il linguaggio con cui Unix è stato scritto, ma ha molte scomode implementazioni dell'input/output. La shell C ha il controllo dei job, quindi può mandare un job eseguito in background (“sotto shell”) in foreground (“in shell corrente”). Inoltre ha la funzione di history (storia dei comandi) che permette di modificare e ripetere comandi eseguiti precedentemente.

Il prompt di default per la shell Bourne è $ (o # per l'utente root). Il prompt di default per la shell C è %.

Sono disponibili in rete molte altre shell. Quasi tutte sono basate sulla shell sh(1) o csh(1) con estensioni per fornire il controllo dei job alla shell sh(1), permettere di manipolare il modo di esecuzione dei comandi su linea di comando, cercare attraverso i comandi eseguiti precedentemente, fornire il completamento dei nomi dei comandi, prompt personalizzati, ecc. Alcune delle seguenti shell maggiormente conosciute potrebbero essere sul proprio amato sistema Unix: la shell korn, ksh, di David Korn e la shell Bourne Again, bash(1), dal progetto GNU Free Software Foundations, entrambe basate su sh(1), la shell T-C, tcsh(1) e l'estensione della shell C, cshe, entrambe bastate su csh(1). In seguito si descriveranno alcune delle caratteristiche di sh(1) e csh(1), così per iniziare.

5.1 Comandi built-in

La shell ha alcuni comandi built-in, chiamati anche comandi nativi. Questi comandi sono eseguiti direttamente dalla shell e non chiamano nessun altro programma per essere eseguiti. Questi comandi built-in possono essere diversi tra le varie shell.

5.1.1 Sh

Per la shell Bourne alcuni dei comandi built-in più comunemente usati sono:

: comando null
. prende (legge ed esegue) i comandi da un file
case condizionale case
cd cambia la directory di lavoro ($HOME di default)
echo scrive una stringa su standard output
eval valuta l'argomento specificato e ritorna il risultato alla shell
exec esegue il comando specificato rimpiazzando la shell corrente
exit esce dalla shell corrente
export condivide le variabili di ambiente specificate con le successive shell
for condizionale di ciclo for
if condizionale if
pwd mostra la directory di lavoro corrente
read legge una linea di input da standard input
set setta le variabili di shell
test valuta un'espressione come vera o falsa
trap intrappola un tipo di segnale ed esegue comandi
umask setta la maschera di default relativa ai permessi da impostare per i nuovi file
unset resetta le variabili di shell
wait attente che un specifico processo termini
while condizionale di ciclo while

5.1.2 Csh

Per la shell C i comandi built-in maggiormente usati sono:

alias assegna un nome a una funzione
bg mette un job in background
cd cambia la directory di lavoro corrente
echo scrive una stringa su standard output
eval valuta gli argomenti specificati e ritorna il risultato alla shell
exec esegue il comando specificato rimpiazzando la shell corrente
exit esce dalla shell corrente
fg porta un job in foreground
foreach condizionale di ciclo for
glob crea un'espansione dei nomi di file su una lista senza tenere conto del carattere di escape \
history stampa la storia dei comandi della shell
if condizionale if
jobs mostra o controlla i job attivi
kill termina un processo specifico
limit setta dei limiti sulle risorse di sistema
logout termina la shell di login
nice comando abbassa la priorità di schedulazione del comando specificato
nohup comando non termina il comando specificato quando la shell esce
popd estrae un record dallo stack delle directory e ritorna nella directory estratta
pushd cambia nella nuova directory specificata e aggiunge quella corrente nello stack delle directory
rehash ricrea la tabella hash dei percorsi (path) per i file eseguibili
repeat ripete un comando il numero di volte specificato
set setta una variabile di shell
setenv setta una variabile di ambiente per la shell corrente e per quelle successive
source prende (legge ed esegue) comandi da un file
stop ferma uno specifico job in background
switch condizionale switch
umask setta la maschera di default relativa ai permessi da impostare per i nuovi file
unalias rimuove il nome alias specificato
unset resetta le variabile di shell
unsetenv resetta le variabili di ambiente
wait attente la terminazione di tutti i processi in background
while condizionale di ciclo while

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.