[Linux, il Baltico e un povero ardisch] [About] [Copertina] [Linux, il Baltico e un povero ardisch]

Articoli


3.2 In cui si da' una pennellata anche a Picasso.

Ora proverò a configurare anche picasso, seguendo la traccia di quanto fatto per Slackware, così da evidenziarne le differenze.

Intanto notiamo subito la diversa impostazione dei file di startup. Slackware raccoglieva tutto nel direttorio /etc/rc.d, mentre Red Hat aggiunge un livello intermedio /etc/rc.d/rc? dove il ? rappresenta il numero dell'init level. Questi direttori contengono solo dei link simbolici agli script che invece sono posti in /etc/rc.d/init.d. Questo consente di dotare ciascuno script di un peso diverso a seconda dell'init level, semplicemente usando nomi diversi per i link simbolici. Questo è lo standard nel System V, ed è usato anche da Debian. Slackware invece rimane fedele al BSD.

Questi script sono un bel pò più scaltri di quelli di Slackware, infatti evitano di usare sleep dopo aver smontato i filesystem, e non necessitano di modifiche per l'ora del sistema; interrogano direttamente il bios.

Creo il solito /etc/fstab, non senza notare come Red Hat preferisca concentrare i mount point come sottodirettori di /mnt piuttosto che direttamente sotto /. Tutto è più pulito ed ordinato, ma mi sembra troppo scomodo da usare. E` bello invece il fatto che non mi sia necessario montare esplicitamente queste nuove partizioni aggiungendo una riga in rc. Un passo in avanti.

Manca invece il lancio di gpm che Slackware aggiunge all'installazione, mentre tutti mancano della solita pulizia di /tmp

rm -rf /tmp
if      [ ! -d /tmp ]
then    mkdir /tmp
        chmod 1777 /tmp
fi
Questa è una cosa molto personale, ma io, sempre in attesa di configurare un giorno /tmp come ramdisk, voglio esser certo di non prendere brutte abitudini, quali quella di mettere (e lasciare) cose importanti sotto /tmp.

Vediamo il profilo della shell. Si distingue tra /etc/profile, comune a tutte le shell di tipo bourne e /etc/bashrc, usato solo da bash. La cosa mi suona strana. Un'occhiata alla pagina del manuale di bash mi conferma il sospetto, che diventa prova certa dopo una occhiata al contenuto di ~/.bashrc. La lettura di /etc/bashrc avviene grazie ad una apposita riga inserita in ~/.bashrc. Sembra una cosa pulita, fatta per consentire ad un utente di scegliere se eseguire o meno quello script, ma ... quando si esegue una subshell l'ambiente non è più quello proprio di bash, come mi aspetterei, ma quello ristretto di sh, che invece mi aspetterei solo invocando /bin/sh. La cosa può essere pericolosa, in quanto lo stesso script può comportarsi diversamente a seconda del livello di nidificazione delle shell, oppure a seconda se la shell è una shell di login oppure no.

Per ovviare a questo inconveniente ho posto in /etc/bashrc la riga

alias sh="/bin/bash"
in modo che ogni chiamata a sh da una shell di login sia convertita in una chiamata a bash, mentre gli script che richiedono la possono (e debbono) correttamente invocare come #!/bin/sh.

In questo script poniamo tutte quelle personalizzazioni che ho fatto anche per Slackware, con qualcosina in più:

export TTY=$(tty | xargs basename)
mi fornisce una variabile con la più corta parte identificante il terminale su cui agisco. E` molto comoda in ambienti a terminali multipli, come le console virtuali di Linux o le xterm di X. Così posso usare questo prompt:
if      [ "$SHELL" = "/bin/bash" ]
then    if      [ "$TERM" = "xterm" ]
        then
                xsize()
                {
                        set -- $(stty size)
                        export SIZE="$2 x $1"
                        xtitle
                }
                xtitle()
                {
                        if [ "$TERM" = "xterm" ]
                        then    echo -ne "\033]2;$TTY  $SIZE     $PWD\007"
                        fi
                }
                export -f xsize xtitle
                export PROMPT_COMMAND="xtitle"  # esegue xtitle ad ogni prompt
                trap xsize SIGWINCH     # esegue xsize ad ogni resize 
                xsize   # solo per la prima volta
                PS1="\u@\h [\d \t]\n$SHLVL\\$ "
        else    # terminale o console
                PS1="$TTY:\u@\h \w [\d \t]\n$SHLVL\\$ "
        fi
fi
Questo mostra al prompt le solite informazioni (più il nome del terminale), che invece, in caso di xterm, suddivide tra prompt vero e proprio e titolo della finestra, in cui compaiono il nome del terminale, le dimensioni della finestra ed il direttorio corrente. C'è a chi piace.

Provvediamo ad un alias tra ls e dircolors. Mi piacerebbe indagare sui retroscena di questo divorzio che ha impedito la creazione di un pacchetto ufficiale GNU per l'ls colorato di Linux.


[Linux, il Baltico e un povero ardisch] [About] [Copertina] [Linux, il Baltico e un povero ardisch]