Capitolo 5. Shell

Indice
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
casecondizionale case
cdcambia la directory di lavoro ($HOME di default)
echoscrive una stringa su standard output
evalvaluta l'argomento specificato e ritorna il risultato alla shell
execesegue il comando specificato rimpiazzando la shell corrente
exitesce dalla shell corrente
exportcondivide le variabili di ambiente specificate con le successive shell
forcondizionale di ciclo for
ifcondizionale if
pwdmostra la directory di lavoro corrente
readlegge una linea di input da standard input
setsetta le variabili di shell
testvaluta un'espressione come vera o falsa
trapintrappola un tipo di segnale ed esegue comandi
umasksetta la maschera di default relativa ai permessi da impostare per i nuovi file
unsetresetta le variabili di shell
waitattente che un specifico processo termini
whilecondizionale di ciclo while

5.1.2. Csh

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

aliasassegna un nome a una funzione
bgmette un job in background
cdcambia la directory di lavoro corrente
echoscrive una stringa su standard output
evalvaluta gli argomenti specificati e ritorna il risultato alla shell
execesegue il comando specificato rimpiazzando la shell corrente
exitesce dalla shell corrente
fgporta un job in foreground
foreachcondizionale di ciclo for
globcrea un'espansione dei nomi di file su una lista senza tenere conto del carattere di escape \
historystampa la storia dei comandi della shell
ifcondizionale if
jobsmostra o controlla i job attivi
killtermina un processo specifico
limitsetta dei limiti sulle risorse di sistema
logouttermina la shell di login
nice comandoabbassa la priorità di schedulazione del comando specificato
nohup comandonon termina il comando specificato quando la shell esce
popdestrae un record dallo stack delle directory e ritorna nella directory estratta
pushdcambia nella nuova directory specificata e aggiunge quella corrente nello stack delle directory
rehashricrea la tabella hash dei percorsi (path) per i file eseguibili
repeatripete un comando il numero di volte specificato
setsetta una variabile di shell
setenvsetta una variabile di ambiente per la shell corrente e per quelle successive
sourceprende (legge ed esegue) comandi da un file
stopferma uno specifico job in background
switchcondizionale switch
umasksetta la maschera di default relativa ai permessi da impostare per i nuovi file
unaliasrimuove il nome alias specificato
unsetresetta le variabile di shell
unsetenvresetta le variabili di ambiente
waitattente la terminazione di tutti i processi in background
whilecondizionale 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>.