Avanti Indietro Indice

11. Bash

Se fornite a login una combinazione di username e password valida, questo verificherà nel file /etc/passwd quale shell deve mettervi a disposizione. Nella maggior parte dei casi per un sistema Linux, questa sarà la shell bash. Spetta a bash leggere ed interpretare i vostri comandi. Può essere vista contemporaneamente come un'interfaccia utente, e come un interprete di linguaggio di programmazione.

Come interfaccia utente legge i vostri comandi e, se sono dei comandi ``interni'' come cd li esegue essa stessa, altrimenti cerca ed esegue un programma se sono dei comandi ``esterni'', come cp o startx. Bash svolge anche altri compiti diversi, come il mantenimento dello storico dei comandi ed il completamento automatico dei nomi.

Abbiamo già visto bash in azione come interprete di linguaggio di programmazione. Gli script che vengono eseguiti da init per avviare il sistema solitamente sono degli script di shell, e vengono eseguiti da bash. Avere a disposizione un vero e proprio linguaggio di programmazione affianco ai programmi di utilità messi a disposizione dalla linea di comando, costituisce un potente strumento, se sapete usarlo. Ad esempio (permettetemi l'immodestia), l'altro giorno ho dovuto applicare una serie di patch ai file di una directory contenente del codice sorgente. Sono riuscito a farlo con questo semplice, singolo comando:

for f in /home/greg/sh-utils-1.16*.patch; do patch -p0 < $f; done;

Questo comando cerca nella mia directory personale tutti quei file i cui nomi iniziano per sh-utils-1.16 e finiscono per .patch. Quindi ne prende uno alla volta, lo imposta alla variabile f, ed esegue i comandi contenuti tra le istruzioni do e done. Nel mio caso c'erano 11 file di patch, ma avrebbero potuto facilmente essere anche 3000.

11.1 Configurazione

Il file /etc/profile controlla il comportamento globale di bash sul sistema. Quello che scriverete su questo file avrà effetto per tutti gli utenti che utilizzeranno bash sul vostro sistema. Aggiungerà inoltre alcune directory alla variabile di ambiente PATH, imposterà la variabile MAIL, ecc.

Il comportamento predefinito della tastiera lascia spesso molto a desiderare. Attualmente è la libreria readline che lo gestisce. Readline è un pacchetto separato che gestisce la linea di comando, fornendo lo storico dei comandi ed il completamento automatico dei nomi, così come alcune caratteristiche di editing avanzato da linea di comando. Viene compilata all'interno di bash. In modo predefinito, readline viene configurata attraverso il file .inputrc, presente nella vostra directory home. La variabile bash INPUTRC può venire utilizzata per modificare questa impostazione. Per esempio in Red Hat 6, INPUTRC viene impostata a /etc/inputrc in /etc/profile. Questo permette ai tasti backspace, delete, home e end, di funzionare adeguatamente per tutti gli utenti.

Dopo che bash ha letto il file di configurazione globale di sistema, va a leggere il vostro file di configurazione personale. Ne verifica la presenza nella vostra directory home attraverso i nomi di file .bash_profile, .bash_login e .profile. Esegue il primo dei tre che individua. Se volete modificare il comportamento di bash solo per voi, senza cambiare il suo funzionamento per gli altri utenti, fatelo in questi file. Ad esempio, molte applicazioni usano delle variabili di ambiente per impostare il proprio funzionamento. Io ho la variabile EDITOR impostata a vi, in modo da poter utilizzare vi all'interno di Midnight Commander (un eccellente file manager testuale), invece del suo editor predefinito.

11.2 Esercizi

I principi base di bash sono facili da imparare. Ma non fermatevi lì: c'è ancora molto materiale per approfondire. Prendete l'abitudine di cercare metodi sempre migliori per svolgere determinati compiti.

Leggete gli script di shell, cercate di capire le cose che non vi sono chiare.

11.3 Altre Informazioni


Avanti Indietro Indice