3.9. Le Shell
Indietro | Capitolo 3. Basi di Unix | Avanti

## 3.9. Le Shell

In FreeBSD, la maggior parte del lavoro di tutti i giorni viene svolto tramite un'interfaccia a riga di comando chiamata shell. Uno dei compiti principali di una shell è quello di prendere in input dei comandi ed eseguirli. Inoltre molte shell hanno delle funzioni built-in (incorporate) utili nei lavori ordinari come la gestione dei file, la sostituzione dei nomi dei file, la modifica della riga di comando, la creazione di macro di comandi, e la gestione delle variabili d'ambiente. FreeBSD si propone con una serie di shell, come la Shell Bourne, `sh`, e la versione successiva della C-shell, `tcsh`. Molte altre shell sono disponibili nella FreeBSD Ports Collection, come le shell `zsh` e `bash`.

Quale shell devi usare? È veramente una questione di gusti. Se sei un programmatore di C potresti sentirti a tuo agio con una shell C-like come la `tcsh`. Se vieni da Linux o non sei pratico dell'interfaccia a riga di comando di UNIX® potresti provare la `bash`. Il fatto è che ogni shell ha delle caratteristiche che possono o meno combaciare con il tuo ambiente di lavoro preferito, e quindi devi scegliere tu stesso quale shell utilizzare.

Una caratteristica comune in una shell è il completamento dei nomi dei file. Dopo aver digitato alcuni dei primi caratteri di un comando o di un nome di file, la shell di solito può completare in modo automatico il resto del comando o del nome del file tramite la pressione del tasto Tab sulla tastiera. Ecco un esempio. Supponiamo che hai due file chiamati `foobar` e `foo.bar`. Vuoi cancellare `foo.bar`. Quello che dovresti digitare sulla tastiera è: `rm fo[Tab].[Tab]`.

La shell dovrebbe visualizzare `rm foo[BEEP].bar`.

Il [BEEP] è la campanella della console, che mi segnala che la shell è incapace di completare interamente il nome del file poichè esiste più di una sola corrispondenza. Sia `foobar` che `foo.bar` iniziano con `fo`, tuttavia la shell è riuscita a completarlo in `foo`. A questo punto premendo `.`, e poi di nuovo Tab, la shell sarà in grado di completare da sola il resto del nome del file.

Un altro aspetto di una shell è l'uso delle variabili d'ambiente. Le variabili d'ambiente sono una coppia di valori mutevoli memorizzati nello spazio dell'ambiente della shell. Questo spazio può essere letto dai programmi invocati dalla shell, e di conseguenza questo spazio può contenere le configurazioni di molti programmi. Qui sotto c'è una lista delle variabili d'ambiente più comuni con il loro rispettivo significato:

Variabile | Descrizione
--- | ---
`USER` | Il nome dell'utente attualmente loggato.
`PATH` | Lista di directory separate da due punti utilizzate per la ricerca dei binari.
`DISPLAY` | Nome di rete del display X11 a cui connettersi, se disponibile.
`SHELL` | La shell corrente.
`TERM` | Il nome del tipo di terminale dell'utente. Usato per determinare le capacità del terminale.
`TERMCAP` | Serie di elementi di codici di escape del terminale utilizzati per realizzare svariate funzioni del terminale.
`OSTYPE` | Il tipo di sistema operativo. FreeBSD, ad esempio.
`MACHTYPE` | L'architettura della CPU su cui il sistema gira.
`EDITOR` | L'editor di testo preferito dall'utente.
`PAGER` | L'impaginatore di testo preferito dall'utente.
`MANPATH` | Lista di directory separate da due punti utilizzate nella ricerca delle pagine man.

Il modo di settare una variabile d'ambiente varia leggermente a seconda della shell utilizzata. Per esempio, nelle shell C-Style come `tcsh` e `csh`, puoi usare `setenv` per settare le variabili d'ambiente. Sotto le shell Bourne come `sh` e `bash`, puoi usare `export` per settare le tue variabili d'ambiente correnti. Per esempio, per settare o modificare la variabile d'ambiente `EDITOR` a `/usr/local/bin/emacs`, sotto `csh` o `tcsh` si può utilizzare il comando:

    % setenv EDITOR /usr/local/bin/emacs

Sotto le shell Bourne:

    % export EDITOR="/usr/local/bin/emacs"

Con la maggior parte delle shell puoi inoltre creare un'espansione di una variabile d'ambiente mettendo sulla riga di comando il simbolo `$` davanti al nome della variabile stessa. Per esempio, `echo $TERM` visualizzerà ciò che corrisponde a `$TERM`, poichè la shell espande `$TERM` e passa il risultato a `echo`.

Le shell trattano molti caratteri speciali, chiamati meta-caratteri come rappresentazioni speciali di dati. Il più comune di questi è il simbolo `*`, che rappresenta diverse istanze di caratteri in un nome di file. Questi meta-caratteri possono essere usati per la sostituzione dei nomi di file. Per esempio, digitando `echo *` è quasi come aver digitato `ls` poichè la shell prende tutti i file che corrispondono a `*` e li mette sulla riga di comando con `echo` che quindi li visualizza.

Per impedire alla shell di interpretare questi caratteri speciali, questi possono essere messi in escape mettendo subito prima di essi un backslash (`\`). `echo $TERM` visualizza il tipo del tuo terminale. `echo \$TERM` visualizza `$TERM` così com'è.

### 3.9.1. Cambiare la Propria Shell

Il modo più semplice per cambiare la propria shell è quello di usare il comando `chsh`. Eseguendo `chsh` verrà invocato l'editor definito nella tua variabile d'ambiente `EDITOR`; nel caso in cui questa non sia stata settata, verrà invocato `vi`. Modifica la riga «Shell:» in base alle tue esigenze.

Puoi anche eseguire `chsh` con l'opzione `-s`; in questo modo verrà settata la shell in modo diretto, senza che sia necessario invocare l'editor. Per esempio, se vuoi cambiare la tua shell in `bash`, potresti digitare il seguente comando:

    % chsh -s /usr/local/bin/bash

### Nota:

La shell che desideri utilizzare deve essere presente nel file `/etc/shells`. Se hai installato una shell dalla collezione dei port, allora la nuova shell dovrebbe essere già stata inserita nel suddetto file in modo automatico. Se installi una shell manualmente, questo lavoro lo devi fare tu.

Per esempio, se installi `bash` a mano e la metti sotto `/usr/local/bin`, dovresti fare questo:

    # echo "/usr/local/bin/bash" >> /etc/shells

Dopo averlo fatto riavvia `chsh`.

Indietro | Risali | Avanti
3.8. I Demoni, i Segnali, e come Uccidere i Processi | Partenza | 3.10. Editor di Testo

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>.