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