Questi sono i file di configurazione che stiamo per personalizzare:
/etc/profile /etc/bashrc
.bashrc .bash_profile .bash_logout .inputrc .less .lessrc .xinitrc
.fvwmrc .fvwm2rc95 .Xmodmap .Xmodmap.num .Xdefaults .jedrc
.abbrevs.sl .joerc .emacs
Non aggiungete utenti prima di completare la configurazione; metterete infatti i dot file in /etc/skel.
Questo è forse il programma più importante dopo il kernel. Per
personalizzare bash
, questi sono i file principali da editare:
/etc/bashrc
contiene gli alias e le funzioni valide per
l'intero sistema;
/etc/profile
contiene le variabili d'ambiente per l'intero
sistema e i programmi di avvio;
$HOME/.bashrc
contiene gli alias e le funzioni
dell'utente;
$HOME/.bash_profile
contiene le variabili
d'ambiente e i programmi di avvio dell'utente;
$HOME/.inputrc
contiene definizioni di tasti e altre
cosette.
Qui sotto ci sono esempi di questi file. Primo, il più importante: /etc/profile. Viene usato per configurare molte cose in una macchina Linux, come vedrete nelle sezioni seguenti. Fate attenzione agli apici inversi!
# /etc/profile # Variabili di ambiente globali e programmi di avvio # Le funzioni e gli alias vanno in /etc/bashrc # Questo file imposta queste caratteristiche: # # o path # o prompt # o alcune variabili d'ambiente # o ls a colori # o il comportamento di less # o backspace in rxvt # # Gli utenti possono sovrascrivere questi settaggi e/o aggiungerne altri # nel loro $HOME/.bash_profile # imposta un path decente, comprendendo anche KDE PATH="$PATH:/usr/X11R6/bin:/opt/kde/bin:$HOME/bin:." # avvisa l'utente: login o non-login shell. Se e' di login, il prompt e' # colorato in blu; altrimenti in magenta. Il prompt di root e' rosso. # Per una spiegazione dei codici, vedi il Colour-ls mini HOWTO. USER=`whoami` if [ $LOGNAME = $USER ] ; then COLOUR=44 # blu else COLOUR=45 # magenta fi if [ $USER = 'root' ] ; then COLOUR=41 # rosso PATH="$PATH:/usr/local/bin" fi ESC="\033" BOLD=';1' PS1="\[$ESC[$COLOUR;37$BOLD\]$USER:\[$ESC[37;40$BOLD\]\w\\$ " PS2="> " # niente core dump, per piacere ulimit -c 0 # imposta umask if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then umask 002 # non root else umask 022 # root fi # alcune variabili USER=`whoami` LOGNAME=$USER MAIL="/var/spool/mail/$USER" EDITOR=jed HOSTNAME=`/bin/hostname` HISTSIZE=1000 HISTFILESIZE=1000 export PATH PS1 PS2 USER LOGNAME MAIL EDITOR HOSTNAME HISTSIZE HISTFILESIZE # abilita ls a colori eval `dircolors /etc/DIR_COLORS -b` export LS_OPTIONS='-F -s -T 0 --color=yes' # personalizza less LESS='-M-Q' LESSEDIT="%E ?lt+%lt. %f" LESSOPEN="| lesspipe.sh %s" VISUAL=jed LESSCHARDEF=8bcccbcc13b.4b95.33b. # mostra i colori in ls -l | less PAGER=less export LESS LESSEDIT LESSOPEN VISUAL LESSCHARDEF PAGER # aggiusta il backspace per rxvt if [ "$COLORTERM" != "" ] ; then stty erase ^H # alternativa: ^? fi for i in /etc/profile.d/*.sh ; do if [ -x $i ]; then . $i fi done # se c'e' fortune, lancialo if [ -x /usr/games/fortune ] ; then echo ; /usr/games/fortune ; echo fi
Questo è un esempio di /etc/bashrc:
# /etc/bashrc # Funzioni e alias globali # Le variabili d'ambiente vanno in /etc/profile USER=`whoami` if [ $LOGNAME = $USER ] ; then COLOUR=44 else COLOUR=45 fi if [ $USER = `root' ] ; then COLOUR=41 fi ESC="\033" BOLD=';1' export PS1="\[$ESC[$COLOUR;37$BOLD\]$USER:\[$ESC[37;40$BOLD\]\w\\$ " export PS2="> " export CDPATH="$CDPATH:~" alias which="type -path" alias ls="ls $LS_OPTIONS"
Questo è un esempio di .bashrc
:
# $HOME/.bashrc # Prendi le definizioni globali if [ -f /etc/bashrc ]; then . /etc/bashrc fi # questo serve per avvisare l'utente che si trova in non-login shell if [ "$GET_PS1" = "" ] ; then COLOUR=45 ESC="\033" BOLD=';1' export PS1="\[$ESC[$COLOUR;37$BOLD\]$USER:\[$ESC[37;40$BOLD\]\w\\$ " export PS2="> " fi # alias alias cp='cp -i' alias l=less alias lyx='lyx -width 900 -height 700' alias mv='mv -i' alias rm='rm -i' alias x=startx # Alcune funzioni utili inst() # Installa un archivio .tar.gz nella directory corrente { tar -zxvf $1 } cz() # Lista un archivio .zip { unzip -l $* } ctgz() # Lista un archivio .tar.gz { for file in $* ; do tar -ztf ${file} done } tgz() # Crea un archivio .tgz, alla zip { name=$1 ; tar -cvf $1 ; shift tar -rf ${name} $* gzip -S .tgz ${name} }
Questo è un esempio di .bash_profile
:
# $HOME/.bash_profile # Variabili di ambiente e programmi di avvio utente # Questo file contiene settaggi personalizzati che si sovrappongono # a quelli in /etc/profile # Prendi gli alias e le funzioni if [ -f ~/.bashrc ]; then GET_PS1="NO" # non cambiare il colore del prompt . ~/.bashrc fi # imposta alcune directory di default export CDPATH="$CDPATH:$HOME:$HOME/testi:$HOME/testi/geologia"
Questo è un esempio di .inputrc
:
# $HOME/.inputrc # combinazioni di tasti "\e[1~": beginning-of-line "\e[3~": delete-char "\e[4~": end-of-line # (F1 .. F5) are "\e[[A" ... "\e[[E" "\e[[A": "info \C-m" set bell-style visible # non fare beep set meta-flag On # permetti le lettere accentate set convert-meta Off # non togliere l'ottavo bit set output-meta On # mostra i caratteri a 8-bit correttamente set horizontal-scroll-mode On # scorri la linea di comando se e' lunga set show-all-if-ambiguous On # dopo aver premuto TAB
Per fare funzionare i tasti backspace e delete in xterm
e altre
applicazioni X11, bisogna inoltre:
.xinitrc
:
usermodmap=$HOME/.Xmodmap
xmodmap $usermodmap
.Xmodmap
dovrete inserire:
keycode 22 = BackSpace
keycode 107 = Delete
questo mette a posto la modalità console.
xterm
, inserite questo nel vostro
.Xdefaults
:
xterm*VT100.Translations: #override <Key>BackSpace: string(0x7F)\n\
<Key>Delete: string(0x1b) string("[3~")\n\
<Key>Home: string(0x1b) string("[1~")\n\
<Key>End: string(0x1b) string("[4~")\n\
Ctrl<Key>Prior: string(0x1b) string("[40~")\n\
Ctrl<Key>Next: string(0x1b) string("[41~")
nxterm*VT100.Translations: #override <Key>BackSpace: string(0x7F)\n\
<Key>Delete: string(0x1b) string("[3~")\n\
<Key>Home: string(0x1b) string("[1~")\n\
<Key>End: string(0x1b) string("[4~")\n\
Ctrl<Key>Prior: string(0x1b) string("[40~")\n\
Ctrl<Key>Next: string(0x1b) string("[41~")
rxvt
è un po' più complicato da sistemare, perché alcune opzioni si
danno in fase di compilazione. Vedete il /etc/profile qui sopra.
Ulteriori informazioni nelle pagine man di bash
(1) e readline
(3).
Non vi aspettate che tutte le applicazioni funzionino! Con joe
in
xterm
, ad esempio, alcuni tasti non funzionano; lo stesso vale per
le versioni di rxvt
inferiori alla 2.4.5.
ls
può mostrare a colori i contenuti delle directory, per evidenziare
i diversi tipi di file. Per abilitare questa caratteristica, servono un paio
di linee come in /etc/profile qui sopra. Questo però non
funziona con rxvt
inferiore alla v. 2.21; dovrete usare xterm
.
Sembra che rxvt
abbia un bug che gli impedisce in alcuni casi di
ereditare correttamente le variabili di ambiente. rxvt
dalla v.
2.4.5 in su funziona bene.
Caldera ha un ls
che non supporta i colori, ma c'è un comando
color-ls
che è la stessa cosa. Inserite in /etc/bashrc:
alias ls="color-ls $LS_OPTIONS"
Con questo eccellente pager si leggono non solo file di testo, ma anche file compressi con gzip, archivi tar e zip, pagine man e altro ancora. La sua configurazione richiede alcuni passaggi:
.lesskey
(è un semplice file ASCII) nella vostra home directory:
^[[A back-line
^[[B forw-line
^[[C right-scroll
^[[D left-scroll
^[OA back-line
^[OB forw-line
^[OC right-scroll
^[OD left-scroll
^[[6~ forw-scroll
^[[5~ back-scroll
^[[1~ goto-line
^[[4~ goto-end
^[[7~ goto-line
^[[8~ goto-end
quindi lanciate il comando lesskey
, che crea un file binario chiamato
.less
contenente le definizioni dei tasti.
#!/bin/sh # Preprocessore per 'less'. Viene usato quando questa variabile di ambiente # è impostata: LESSOPEN="|lesspipe.sh %s" lesspipe() { case "$1" in *.tar) tar tf $1 2>/dev/null ;; # Vedi i file .tar e .tgz *.tgz|*.tar.gz|*.tar.Z|*.tar.z) tar ztf $1 2>/dev/null ;; *.Z|*.z|*.gz) gzip -dc $1 2>/dev/null ;; # Vedi i file compressi *.zip) unzip -l $1 2>/dev/null ;; # Vedi gli archivi *.arj) unarj -l $1 2>/dev/null ;; *.rpm) rpm -qpil $1 2>/dev/null ;; *.cpio) cpio --list -F $1 2>/dev/null ;; *.1|*.2|*.3|*.4|*.5|*.6|*.7|*.8|*.9|*.n|*.man) FILE=`file -L $1` FILE=`echo $FILE | cut -d ' ' -f 2` if [ "$FILE" = "troff" ]; then groff -s -p -t -e -Tascii -mandoc $1 fi ;; *) file $1 | grep text > /dev/null ; if [ $? = 1 ] ; then # non e' un file di testo di qualche tipo strings $1 fi ;; esac } lesspipe $1
chmod 755 lesspipe.sh
.
LESSCHARSET
dipende
dal fatto che io vivo in Italia e quindi uso il set di caratteri ISO 8859/1.
Gli amici americani, giapponesi, russi e altro fanno meglio a non settarla.
Uso emacs
di rado, quindi ho solo un paio di dritte.
Alcune versioni di emacs
non sono preconfigurate per i colori e
l'evidenziazione della sintassi. Scrivete quanto segue nel vostro
.emacs
:
(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)
Funziona solo in X11. In aggiunta, per abilitare le lettere accentate dovrete aggiungere:
(standard-display-european 1)
Lascio a voi la lettura di tutta la documentazione di
emacs
per scoprire come adattarlo ai vostri gusti; potenzialmente,
ce n'è per mesi di smanettamenti. Il Dotfile Generator (Sezione
Software per la configurazione) vi può dare una mano.
Alcune versioni di joe
non funzionano a colori in console, e non vanno
nemmeno certi tasti speciali. Che io sappia, nessuno ha trovato una
soluzione per questi inconvenienti.
Una soluzione svelta (ma inelegante) per il primo problema è questa:
~$ export TERM=vt100
~$ joe myfile
(editate il vostro file)
~$ export TERM=linux
Scegliete inoltre la configurazione editando .joerc
,
.jstarrc
o l'emulazione che preferite; potete partire dai file di
configurazione in /usr/lib/joe.
Questo è il mio editor preferito: fa quello che mi serve, è più snello e
più facile da configurare di emacs
ed emula altri
editor molto bene. Presso la mia università, molti usano jed
in
emulazione EDT
, l'editor di sistema di VMS.
I file di configurazione sono .jedrc
e /usr/lib/jed/lib/*;
il primo può essere adattato dal file jed.rc
che sta nella directory
appena indicata.
jed
, create un file di nome
/usr/lib/jed/lib/defaults.sl contenente una sola linea:
() = evalfile("linux");
xjed
apparentemente non riconosce il tasto DEL,
aggiungete queste linee nel vostro .jedrc
:
#ifdef XWINDOWS
x_set_keysym (0xFFFF, 0, "\e[3~");
setkey (`delete_char_cmd'', "\e[3~");
#endif
Info_Directory = "/usr/info";
e UCB_Mailer = "/bin/mail";
;
jed
per fargli emulare EDT
(o altri editor)
è semplicissimo: dovete solo cambiare un paio di linee nel vostro
.jedrc
. Se volete usare il tasto `+' del tastierino numerico per
cancellare parole anzichè un singolo carattere, aggiungete in .jedrc
:
unsetkey("\eOl");
unsetkey("\eOP\eOl");
setkey("edt_wdel", "\eOl");
setkey("edt_uwdel", "\eOP\eOl");
dopo la linea con scritto () = evalfile("edt");
.
xjed
il tastierino numerico per l'emulazione
EDT
, inserite quanto segue in .Xmodmap
:
keycode 77 = KP_F1
keycode 112 = KP_F2
keycode 63 = KP_F3
keycode 82 = KP_F4
keycode 86 = KP_Separator
xjed
si fa aggiungendo linee come le
seguenti in .Xdefaults
:
xjed*Geometry: 80x32+150+50
xjed*font: 10x20
xjed*background: midnight blue
# eccetera...
$HOME/.abbrevs.sl
:
create_abbrev_table ("Global", "0-9A-Za-z");
define_abbrev ("Global", "GG", "Guido Gonzato");
create_abbrev_table ("TeX", "\\A-Za-z0-9");
define_abbrev ("TeX", "\\beq", "\\begin{equation}");
define_abbrev ("TeX", "\\eeq", "\\end{equation}");
% and so on...
quindi battete ESC x abbrev_mode
per abilitarlo. Se volete avere le
abbreviazioni attivate per default, aggiungete queste entry in .jedrc
:
define text_mode_hook ()
{
set_abbrev_mode (1);
}
%
define fortran_hook ()
{
set_abbrev_mode (1);
use_abbrev_table ("Fortran");
}
% e cosi' via...
Ulteriori informazioni in xjed.doc
, incluso nella distribuzione.
Questo programma è forse il più comodo per una semplice gestione dei fax. Bisogna editare lo script /usr/bin/fax; molto semplice, ma ci sono un paio di stranezze che mi hanno procurato qualche grattacapo:
T
' o `P
'. Inserite invece `ATDT
' o `ATDP
';
-i
' e `-k
', necessari per efax
. Se volete aggiungere un
comando AT, mettetelo nella stringa appropriata senza `AT
' ma col
prefisso `-i
' o `-k
'. Per esempio, per aggiungere `ATX3
'
a INIT, dovrete mettere `-iX3
'.
Assumendo che abbiate la distribuzione teTeX, ecco un paio di cosette:
~# texconfig init ; texconfig hyphen
texhash
per fare riconoscere a teTeX il nuovo package;
dvips
, il file da modificare è
/usr/lib/texmf/texmf/dvips/config/config.ps. Attenzione, i
campi riguardanti la risoluzione di default toccano anche xdvi
; se vi
succede che quest'ultimo cerca di ricreare i font ogni volta che lo fate
partire, aggiungete in .Xdefault
la linea
XDvi*mfmode:
Questo dovrebbe aiutare.
Si dà per scontato che il vostro kernel ha il supporto per PPP e TCP/IP,
che il loopback è abilitato e che avete già il package pppd
correttamente
installato e magari impostato setuid root. Ovviamente, il vostro ISP deve
supportare il PPP.
Ci sono due modi per fare funzionare il PPP: 1) configurazione manuale, e 2) un programma di configurazione che faccia tutto lui. Qualunque opzione scegliate, dovrete avere queste informazioni a portata di mano:
La configurazione manuale è un fastidio. Si tratta di editare vari file e scrivere degli script; non è troppo difficile, ma è facile fare errori e i nuovi utenti ne sono spesso spaventati. Il PPP HOWTO vi attende. In alternativa, ci sono programmi che vi richiedono le informazioni elencate qui sopra e fanno il lavoro per voi.
Ve la passerete meglio se scaricate uno dei programmi seguenti:
http://www.serv.net/~cameron/ezppp/index.html
.
Molto facile da usare, ma è necessario scrivere lo script di collegamento;
ftp://sunsite.unc.edu/pub/Linux/system/network/serial/ppp
. Uno dei migliori è pppsetup-X.XX.tar.gz. Anche qui serve lo
script;
wvdial
e eznet
: gli date il numero di telefono, lo username e
la password, e siete a posto. Le loro home page sono agli indirizzi
http://www.worldvisions.ca/wvdial
e
http://www.hwaci.com/sw/eznet
. Io preferisco quest'ultimo.
Prima di tutto, create un file /etc/resolv.conf come questo:
nameserver w.x.y.z
dove inserirete l'indirizzo del name server del vostro provider. Per
creare un account con eznet
, date questo comando:
#~ eznet add service=VOSTRO_ISP user=NOME password=PASSWORD phone=NUMERO
quindi provate a chiamare con eznet up VOSTRO_ISP
. Se il modem
non prende la linea, aggiungete questo comando:
#~ eznet change VOSTRO_ISP init0=atx3
Per finire la connessione, il comando è eznet down.
Tutto qui!
Per prendere la posta dal server POP, si usa un client POP come fetchpop
o fetchmail
; quest'ultimo è forse l'unica scelta se il PPP server del
vostro ISP non supporta il comando LAST. Si trovano su
ftp://sunsite.unc.edu/pub/Linux/system/mail/pop
.
Per configurare questi client:
fetchpop
: la prima volta che lo lanciate, vi verranno chieste
delle informazioni. Rispondete alle domande e siete a posto.
fetchmail
: adattate questo esempio di file .fetchmailrc
:
# $HOME/.fetchmailrc
poll mbox.supernet.edu with protocol pop3;
user pippo there with password _Loo%ny is pippo here
Un utente mi ha scritto per dirmi che aggiungendo ``smtphost localhost''
alla seconda linea, le prestazioni sono molto migliorate.
Dovete settare i permessi di questo file con chmod 600 .fetchmailrc
,
altrimenti fetchmail
si rifiuterà giustamente di partire.
Andiamo, non è più difficile come una volta... Tutte le principali
distribuzioni forniscono un programma di configurazione per X11 (ad es.
XConfigurator
, sax
, o almeno xf86config
). Ormai
l'installazione del server X è pressoché automatica, ma certe schede video
possono fare i capricci. In questi casi, seguo questo metodo che ha sempre
funzionato:
ftp://ftp.XFree86.org/pub/XFree86/current/binaries
, cd
nella sottodirectory di Linux che vi riguarda e scaricate i file
XVERSIONEbin.tgz
, XVERSIONEset.tgz
e tutti i server.
Il primo di questi archivi contiene il SuperProbe
più aggiornato;
XVERSIONEbin.tgz
in una directory temporanea,
spostatevici e date il comando ./SuperProbe
. Se la vostra scheda
video viene riconosciuta, è molto probabile che riuscirete a configurarla;
altrimenti, peccato.
XVERSIONEset.tgz
partendo da
/usr/X11R6/, quindi eseguite
XF86Setup
.
Anche se ha sempre funzionato per me, potreste avere diversa fortuna. Attenzione che spesso X11 non parte perché avete scelto dei settaggi troppo bassi per il monitor! Partite con settaggi di base, ad es. 800x600 e 256 colori, poi provate ad andare su. Attenzione: queste operazioni sono pericolose e potreste danneggiare il monitor!
Abbiamo visto prima come fare funzionare alcuni tasti speciali. Il file
.Xmodmap
funziona bene se vogliamo usare Xjed, ma rende
inutilizzabile il tastierino numerico. Servirà quest'altro file, che
chiameremo .Xmodmap.num
:
! Le definizioni si trovano in <X11/keysymdef.h>
keycode 77 = Num_Lock
keycode 112 = KP_Divide
keycode 63 = KP_Multiply
keycode 82 = KP_Subtract
keycode 86 = KP_Add
keycode 79 = KP_7
keycode 80 = KP_8
keycode 81 = KP_9
keycode 83 = KP_4
keycode 84 = KP_5
keycode 85 = KP_6
keycode 87 = KP_1
keycode 88 = KP_2
keycode 89 = KP_3
keycode 90 = KP_0
keycode 91 = KP_Decimal
Assicuratevi che /etc/X11/XF86Config non contenga queste tre linee:
ServerNumLock
Xleds
XkbDisable
ed in caso, mettetele in commento. Per riabilitare il tastierino, si dà il
comando xmodmap .Xmodmap.num
.
Per ottenere il login in modalità grafica, si deve editare il file /etc/inittab, che dovrebbe includere una linea come questa:
x:5:respawn:/usr/bin/X11/xdm -nodaemon
5 è il runlevel che corrisponde alla modalità X11 (S.u.S.E. usa 4). Modificate la linea che stabilisce il runlevel di default (di solito è 2 o 3), inserendo il valore qui sopra:
id:5:initdefault:
Il numero di colori si specifica in /etc/X11/xdm/Xserver (AQVD):
:0 local /usr/X11R6/bin/X -bpp 16 # 65k colori
Se avete già il file .xinitrc
, copiatelo nel file
.xsession
e rendete eseguibile quest'ultimo con
chmod +x .xsession
. Ora date il comando telinit 5
e siete
a posto!
Una volta che il server X funziona, ci sono infinite possibilità di configurazione; dipende dal window manager che volete usare, e ce ne sono decine tra cui scegliere. Quasi sempre, si tratta di modificare uno o più file ASCII nella vostra home directory; in altri casi non si deve editare niente e si utilizzano appositi programmini, o addirittura un apposito menu.
Alcuni esempi:
$HOME/GNUstep
, oltre ad un ottimo
programmino di configurazione;
In breve: se non vi spiace editare dei file di configurazione, scegliete
icewm
, fvwm*
, blackbox
etc; se invece vi spiace,
la scelta è limitata attualmente a KDE e WindowMaker.
È importante avere un buon file .xinitrc
. Un esempio:
#!/bin/sh
# $HOME/.xinitrc
# metti a posto i tasti speciali
usermodmap=$HOME/.Xmodmap
xmodmap $usermodmap
xset s noblank # togli lo screen saver della console
xset s 300 2 # screen saver di X11, parte dopo 5 minuti
xsetroot -solid "medium blue" &
rxvt -cr green -ls -bg black -fg white -fn 7x14 \
-geometry 80x30+57+0 &
if [ "$1" = "" ] ; then # default
WINMGR=wmaker
else
WINMGR=$1
fi
$WINMGR
Per quanto non mi sembra che sia strettamente necessario, rendetelo
eseguibile con chmod +x .xinitrc
.
Questo .xinitrc
consente di scegliere il window manager: provate
$ startx startkde # o altro
(non funziona con certe versioni di S.u.S.E.).
Quando avete finito di configurare i dot file, copiateli nella directory /etc/skel come già detto alla Sezione Configurazione software.
Da notare che .pinerc
non può essere personalizzato del tutto;
assicuratevi che almeno i campi user-domain
, smtp-server
e
nntp-server
siano a posto.
Se fate l'upgrade, oltre ai soliti backup dovrete ricordarvi di salvare alcuni file addizionali. Alcuni potrebbero essere /etc/X11/XF86Config, /usr/bin/fax, tutto quello che avete messo in /usr/local, la configurazione del kernel, l'intero /etc e la posta in /var/spool/mail.