Personalizzare bash
Una delle caratteristiche della filosofia di Unix è che l'impostazione del sistema non vuole prevedere tutte le necessità
dell'utente, ma tenta di rendere semplice per ciascuno modificarsi l'ambiente a seconda delle proprie necessità. Per questo vengono
usati principalmente dei file di configurazione, noti anche come file init, file rc (per run control,
controllo dell'esecuzione) o anche file punto, perché il loro nome di solito inizia con ".". Se vi ricordate,
i file che hanno il nome che inizia con "." non vengono normalmente visualizzati da ls .
I file di configurazione più importanti sono quelli utilizzati dalla shell. La shell di default di Linux è bash , ed
è di questa che parleremo in questo capitolo. Prima di vedere come personalizzare bash, bisogna sapere quali file utilizza.
Ci sono diversi modi in cui può essere eseguita bash, ad esempio come shell di login, che è come viene eseguita
al login. La shell di login dovrebbe essere la prima che vedete.
Un'altra modalità in cui si esegue bash è come shell interattiva: una shell qualsiasi che presenti un prompt all'utente
ed aspetti dei comandi. Una shell di login è anche interattiva. Un modo per ottenere una shell interattiva non di login è
per esempio una shell all'interno di un xterm . Qualsiasi shell che viene creata in modo diverso dal login è una
shell non di login.
Infine ci sono le shell non interattive, che sono usate per eseguire dei file di comandi, più o meno come i file batch
di MS-DOS, quelli che finiscono in .BAT. Questi script di shell funzionano come dei mini-programmi; anche se sono generalmente molto
più lenti di un normale programma compilato, è spesso vero che sono molto più semplici da scrivere.
A seconda del tipo di shell, al suo avvio vengono usati diversi file:
Tipo di shell |
Azione |
Login interattivo |
Viene letto ed eseguito il file .bash_profile |
Interattivo |
Viene letto ed eseguito il file .bashrc |
Non interattivo |
Viene letto ed eseguito lo script di shell |
Dato che la maggior parte degli utenti vogliono avere lo stesso ambiente in qualsiasi shell, interattiva, di login o no, iniziamo con
un comando molto semplice da mettere nel file .bash_profile : "source ~/.bashrc ". Il comando source
dice alla shell di interpretare l'argomento come uno script di shell. Per noi questo significa che ogni volta che viene eseguito .bash_profile ,
viene eseguito anche .bashrc .
Ora aggiungeremo semplicemente dei comandi al file .bashrc . Se volete che un comando sia valido solo per una shell di
login, aggiungetelo a .bash_profile .
Quali sono le cose che volete personalizzare? Ecco qualcosa che credo si trovi nel .bashrc del 90% degli utenti di bash:
alias ll="ls -l"
Questo comando ha definito un alias di shell con nome ll, che, quando viene richiamato dall'utente, si "espande"
nel normale comando di shell ls -l . Quindi, assumendo che bash abbia letto quel comando dal file .bashrc ,
potete digitare semplicemente "ll" per avere l'effetto di ls -l nella metà delle digitazioni. Quello che
accade è che quando digitate "ll" e premete , bash lo intercetta,
dato che si aspetta degli alias, e lo sostituisce con ls -l . In realtà non c'è nessun programma che si chiama
"ll" sul sistema, ma la shell traduce automaticamente l'alias in un programma valido.
Alcuni alias di esempio sono riportati di seguito:
alias ls="ls -F" #da' i caratteri alla fine dell'elenco
alias ll="ls -l" #ls speciale
alias la="ls -a"
alias ro="rm *~; rm .*~" #elimina file di backup
alias rd="rmdir" #risparmia battute!
alias md="mkdir"
alias pu=pushd #pushd, popd, e dirs non sono stati
alias po=popd #spiegati in questo manuale, forse
alias ds=dirs #volete guardare di che si tratta nella
#manpage di bash
# questi sono solo scorciatoie da tastiera
alias to="telnet cs.oberlin.edu"
alias ta="telnet altair.mcs.anl.gov"
alias tg="telnet wombat.gnu.ai.mit.edu"
alias tko="tpalk kold@cs.oberlin.edu"
alias tjo="talk jimb@cs.oberlin.edu"
alias mroe="more" #per correggere!
alias moer="more"
alias email="emacs -f rmail" #il mio lettore di posta
alias ed2="emacs -d floss:0 -fg \"grey95\" -bg \"grey50\"" #un modo di richiamare Emacs
Li potete aggiungere al vostro .bashrc . Un alias particolarmente interessante è il primo; con quell'alias, quando
qualcuno digita ls , automaticamente viene aggiunta l'opzione -F (l'alias non prova ad espandersi di nuovo).
È un modo abbastanza comune per aggiungere delle opzioni che usate ogni volta che richiamate un programma. Notate i commenti
con il carattere # . Quando appare un #, la shell ignora il resto della linea.
Potreste aver notato alcune strane cose su questi alias: ad esempio, in alcuni ho tralasciato le virgolette (come in pu ).
Rigorosamente parlando, le virgolette non sono necessarie quando avete solo una parola a destra del segno di uguale. Non è che
mettere le virgolette faccia male, quindi non prendete cattive abitudini: dovreste usarle di sicuro se state per fare un alias di un
comando con delle opzioni e/o argomenti:
alias rf="refrobnicate -verbose -prolix -wordy -o foo.out"
Inoltre, l'alias finale ha dei caratteri strani:
alias ed2="emacs -d floss:0 -fg \"grey95\" -bg \"grey50\""
Come potete aver indovinato, volevo passare le virgolette nelle opzioni stesse, quindi le ho dovute far precedere da una barra rovesciata
in modo da evitare che bash pensasse che volevo segnalare la fine dell'alias.
Infine, ho messo come alias due comuni errori di battitura, mroe e moer, per il comando esatto, more . Gli
alias non interferiscono con gli argomenti passati ad un programma. Funziona lo stesso se scrivete:
/home/larry# mroe hurd.txt
In effetti, sapere come creare gli alias è probabilmente almeno metà della personalizzazione della shell che farete mai.
Sperimentate, scoprite quali comandi lunghi date spesso, e createne degli alias. Scoprirete che rende molto più piacevole lavorare
al prompt della shell.
|