5.3 La shell Bourne, sh

La shell sh(1) usa il file di inizializzazione .profile posto nella home directory dell'utente. Inoltre può esserci un file di inizializzazione globale del sistema, esempio /etc/profile. In tal caso, il file globale del sistema sarà eseguito prima di quello locale.

Un semplice file .profile potrebbe essere come il seguente:

PATH=/usr/bin:/usr/ucb:/usr/local/bin:.         # setta il PATH
export PATH                   # rende disponibile PATH per le sotto-shell
# setta il prompt
PS1="{`hostname` `whoami`} "     # setta il prompt, $ di default
# funzioni
ls() { /bin/ls -sbF "$@";}
ll() { ls -al "$@";}
# setta il tipo di terminale
stty erase ^H              # setta Control-H come tasto di cancellazione
eval `tset -Q -s -m ':?xterm'` # richiede il tipo di terminale, presupponendo
                               # xterm
#
umask 077

Ogni volta che si incontra il simbolo #, il resto di quella linea viene trattato come un commento. Nella variabile PATH ogni directory è separata da due punti (:) e il punto (.) specifica che la directory corrente è nel proprio path. Se il punto non è nel proprio path, lo stesso diventa un semplice elemento per eseguire un programma nella directory corrente:

./programma

Non è una buona idea avere il punto (.) nel proprio PATH, in modo tale da non eseguire inavvertitamente un programma senza averne l'intenzione quando si usa il comando cd per spostarsi in differenti directory.

Una variabile settata in .profile rimane valida solo nel contesto della shell di login, a meno che la si esporti con export o si esegua .profile in un'altra shell. Nell'esempio precedente PATH viene esportato per le sotto-shell. Si può eseguire un file con il comando built-int . di sh(1), esempio:

. ./.profile

Si possono creare proprie funzioni. Nell'esempio precedente la funzione ll, risultato di ls -al, lavora su un specifico file o directory.

Con stty(1) il carattere di cancellazione viene settato a Control+H, che è usualmente il tasto di Backspace.

Il comando tset(1) richiede il tipo di terminale e assume questo a xterm se si conferma con invio <CR>. Questo comando è eseguito con un comando built-in di shell, eval, che prende il risultato del comando tset(1) e lo usa come argomento per la shell. In questo caso l'opzione -s di tset(1) setta le variabili TERM e TERMCAP e le esporta.

L'ultima linea nell'esempio richiama il comando umask, facendo in modo che i file e le directory create non abbiano i permessi di lettura-scrittura-esecuzione per l'utenza gruppo e altri.

Per altre informazioni su sh(1), digitare man sh al prompt di shell.

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