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