Introduzione a Unix
Indietro | Capitolo 5 Shell | Avanti

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

Indietro | Partenza | Avanti
Variabili di ambiente | Risali | La shell C, csh

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