Pour affiner le comportement de bash
, voici les fichiers à
éditer :
/etc/bashrc
contient les alias et fonctions
globales au système;
/etc/profile
positionne globalement les variables
d'environnement et lance les programmes de démarrage communs;
$HOME/.bashrc
contient les alias et fonctions
propres à l'utilisateur;
$HOME/.bash_profile
positionne les variables
d'environnement de l'utilisateur et lance ses programmes de démarrage
propres;
$HOME/.bash_logout
contient les actions à
effectuer à la fermeture de compte (fin du travail);
$HOME/.inputrc
contient les liaisons du clavier et
autres bricoles.
Voici des exemples de ces fichiers. D'abord le plus important :
/etc/profile
qui configure beaucoup de propriétés de
votre système, comme illustré ci-dessous :
# /etc/profile
# Environnement global au système et programmes de démarrage
# Les fonctions et alias vont dans /etc/bashrc
# Ce fichier configure globalement
#
# o le chemin d'exécution (path)
# o les invites (prompts)
# o quelques variables d'environnement
# o ls en couleurs
# o comportement de less
# o le clavier
#
# Les utilisateurs peuvent écraser ces configurations et en ajouter
# d'autres dans leur $HOME/.bash_profile
# mettre un chemin d'exécution décent
echo $PATH | grep X11R6 > /dev/null
if [ $? = 1 ] ; then # ajouter des entrées au chemin
PATH="$PATH:/usr/X11R6/bin:$HOME/bin:."
fi
# indiquer à l'utilisateur les shells de login. En login, l'invite
# (prompt) est en bleu, autrement en magenta. L'invite de root est rouge
USER=`whoami`
if [ $LOGNAME = $USER ] ; then
COLOUR=44
else
COLOUR=45
fi
if [ $USER = 'root' ] ; then
COLOUR=41
fi
# mettez un vrai caractère échappement (Escape) au lieu de ^[
PS1='^[[$COLOUR;37;1m$HOSTNAME:^[[37;40;1m\w\$ '
PS2="Continue> "
# pas de core dump svp
ulimit -c 0
# positionner le umask (permission par défaut des nouveaux fichiers)
if [ `id -gn` = `id -un` -a `id -u` -gt 14 ]; then
umask 002
else
umask 022
fi
# quelques variables
USER=`id -un`
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
# ls en couleurs
eval `dircolors /etc/DIR_COLORS -b`
export LS_OPTIONS='-F -s -T 0 --color=tty'
# configuration de less
LESS='-M-Q'
LESSEDIT="%E ?lt+%lt. %f"
LESSOPEN="| lesspipe.sh %s"
VISUAL=jed
LESSCHARSET=latin1
export LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET
# configuration du clavier
/sbin/kbdrate -s -r 16 -d 500
# configurer globalement d autres programmes
for i in /etc/profile.d/*.sh ; do
if [ -x $i ]; then
. $i
fi
done
Voici le fichier /etc/bashrc
:
# /etc/bashrc
# Fonctions et alias globaux au système
# les variables d'environnement vont en /etc/profile
alias which="type -path"
alias d="ls"
alias dir="d"
Et voici un fichier possible ~/.bashrc
:
# Sourcer les definitions globales
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# Ceci est nécessaire pour notifier les utilisateurs qu'ils se trouvent dans un shell sans login
COLOUR=45
# mettre un vrai caractère échappement (Escape) au lieu de ^[
PS1='^[[$COLOUR;37m$USER:^[[37;40m\w\$ '
# 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
# Quelques fonctions utiles
inst() # Installer une archive .tar.gz dans le repertoire courant
{ gzip -dc $1 | tar xvf - }
cz() # Lister le contenu d'une archive .zip
{ unzip -l $* }
ctgz() # Lister le contenu d'une archive .tar.gz
{
for file in $* ; do
gzip -dc ${file} | tar tf -
done
}
tgz() # Créer une archive .tgz à la zip.
{
name=$1 ; tar -cvf $1 ; shift
tar -rf ${name} $*
gzip -S .tgz ${name}
}
Voici un fichier possible ~/.bash_profile
:
# fichier $HOME/.bash_profile
# Environment et programmes de démarrage propres à l'utilisateur
# Ce fichier contient des configurations définies par l'utilisateur
# écrasant celles dans /etc/profile
# configurer les alias et fonctions propres à l'utilisateur
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# repositionner l'invite PS1
if [ $USER = 'root' ] ; then
COLOUR=41
else
COLOUR=44
fi
# mettez un vrai caractère d'échappement au lieu de ^[
PS1='^[[$COLOUR;37;1m$HOSTNAME:^[[37;40;1m\w\$ '
export PS1
Voici un très simple fichier possible ~/.bash_logout
:
# fichier $HOME/.bash_logout
clear
Voici un fichier ~/.inputrc
:
# fichier $HOME/.inputrc
# liaison des touches du clavier
"\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 # sans bip sonore
set meta-flag On # permettre les caractères à 8 bits (accentués)
set convert-meta Off # .. ne pas les convertir
set output-meta On # .. les afficher correctement
set horizontal-scroll-mode On
set show-all-if-ambiguous On
Pour que les touches arrière (backspace) et suppr (delete)
fonctionnent correctement dans xterm
et d'autres applications
X11, il vous faut également :
~/.xinitrc
:
# dans $HOME/.xinitrc définir le clavier X11
usermodmap=$HOME/.Xmodmap
xmodmap $usermodmap
~/.Xmodmap
:
! dans $HOME/.Xmodmap
keycode 22 = BackSpace
keycode 107 = Delete
ce qui répare votre console.Pour corriger xterm
:
~/.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~")
Voir les pages du manuel (commande man
) de bash(1)
et readline(3)
pour plus de détails.
N'espérez pas voir toutes les applications fonctionner
correctement. Si vous lancez joe
sous xterm
par
exemple, certaines touches ne fonctionnent pas; c'est vrai aussi pour
rxvt
. Il parait que c'est un problème lié à termcap
!
La commande ls
peut lister les répertoires avec des couleurs
pour différencier les types de fichiers. Pour configurer cette
option, ajoutez les lignes suivantes en /etc/profile
:
# à ajouter dans /etc/profile
eval `dircolors /etc/DIR_COLORS -b`
export LS_OPTIONS='-F -T 0 --color=tty'
Ceci positionne la variable d'environnement LS_COLORS
selon les
listes de couleurs définies dans
/etc/DIR_COLORS
. Note: ne me demandez pas pourquoi,
mais ça ne marche pas dans certaines versions de rxvt
; utilisez
alors xterm
ou un programme similaire. Il semble que rxvt
ait un bogue
l'empêchant dans certains cas d'hériter correctement des variables
d'environnement.
Avec cet excellent paginateur, vous pouvez visualiser non seulement
des fichiers de textes ordinaires, mais aussi des fichiers comprimés
par gzip
, des archives tar
ou zip
, des pages de manuel (commande
man
), etc. Sa configuration prend quelques étapes :
~/.lesskey
en ASCII dans votre répertoire domestique:
^[[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
puis lancez la commande lesskey
. Celle-ci crée un fichier binaire
.less
contenant les liaisons des touches.
/usr/bin/lesspipe.sh
:
#!/bin/sh
# fichier /usr/bin/lesspipe.sh
# Préprocesseur pour 'less' utilisé quand la variable d'environnement suivante est définie
# LESSOPEN="|lesspipe.sh %s"
lesspipe() {
case "$1" in
*.tar) tar tf $1 2>/dev/null ;; # Pour voir le contenu d'archives .tar ou .tgz
*.tgz|*.tar.gz|*.tar.Z|*.tar.z) tar ztf $1 2>/dev/null ;;
*.Z|*.z|*.gz) gzip -dc $1 2>/dev/null ;; # Pour voir les fichiers comprimés correctement (.gz)
*.zip) unzip -l $1 2>/dev/null ;; # Pour voir les archives (.zip)
*.arj) unarj -l $1 2>/dev/null ;;
*.rpm) rpm -q -p -i -l $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=`file -L $1` ; # Vérification pour le cas d'un fichier binaire
FILE1=`echo $FILE | cut -d ' ' -f 2`
FILE2=`echo $FILE | cut -d ' ' -f 3`
if [ "$FILE1" = "Linux/i386" -o "$FILE2" = "Linux/i386" \
-o "$FILE1" = "ELF" -o "$FILE2" = "ELF" ]; then
strings $1
fi ;;
esac
}
lesspipe $1
et n'oubliez pas de le rendre exécutable par
chmod 755 lesspipe.sh
.
/etc/profile
:
LESS="-M-Q" # invite longue, silencieuse
LESSEDIT="%E ?lt+%lt. %f" # éditer ligne du haut
LESSOPEN="| lesspipe.sh %s" # filtre
VISUAL=jed # éditeur par défaut- mettez votre préféré
LESSCHARSET=latin1 # afficher les caractères accentués
export LESS LESSEDIT LESSOPEN VISUAL LESSCHARSET
La variable LESSCHARSET
dépend du fait qu'on habite en Europe
Occidentale, où est utilisé le jeu de caractères ISO 8859-1. Les
collègues Américains, Japonais, Russes, etc.. devraient la configurer
autrement.
Certaines distributions d'emacs
ne sont pas préconfigurées
pour les couleurs et la décoration syntaxique. Ajoutez ce qui suit
dans votre ~/.emacs
;; dans fichier $HOME/.emacs
(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)
Ceci ne marche qu'avec X11. Je vous laisse lire attentivement toute la
documentation d'emacs
pour découvrir comment l'adapter à vos
besoins. Cela pourrait prendre des mois de bidouillage!
Verifiez dans /usr/bin
que jmacs
, jstar
et
jpico
sont des liens symboliques vers
joe
. Autrement, tapez les commandes suivantes pour gagner un
peu d'espace disque:
~# cd /usr/bin
/usr/bin# ln -sf joe jmacs ; ln -sf joe jstar ; ln -sf joe jpico
Il ne vous reste qu'à copier /usr/lib/joe/joerc
dans votre
répertoire domestique comme ~/.joerc
puis à l'affiner à vos
besoins.
C'est mon éditeur favori; il fait ce dont j'ai besoin, mais est plus
léger et plus facile à configurer qu' emacs
, et à mon humble
avis émule mieux les autres éditeurs. Beaucoup d'utilisateurs de mon
université veulent jed
pour émuler EDT
, l'éditeur de
VMS
.
Les fichiers de configuration sont ~/.jedrc
et
/usr/lib/jed/lib/*
. Le premier est adapté par le fichier
jed.rc
de ce répertoire-là.
jed
utilise correctement certaines touches,
créez un fichier /usr/lib/jed/lib/defaults.sl
dont la seule
ligne est :
() = evalfile("linux");
/usr/lib/jed/lib/linux.sl
: décommentez la ligne
contenant Info_Directory = "/usr/info"
et ajoutez y
/bin/mail
après UCB_Mailer =
jed
pour qu'il émule
EDT
(ou d'autres éditeurs). Vous devez juste éditer quelques
lignes dans .jedrc
. Si vous souhaitez utiliser la touche +
du pavé numérique pour supprimer des mots entiers au lieu d'un seul
caractère, ajouter ceci dans .jedrc
:
unsetkey("\eOl");
unsetkey("\eOP\eOl");
setkey("edt_wdel", "\eOl");
setkey("edt_uwdel", "\eOP\eOl");
après la ligne contenant () = evalfile("edt");
.
xjed
utilise le pavé numérique en émulation
EDT
il vous faut ajouter ce qui suit dans votre
.Xmodmap
:
keycode 77 = KP_F1
keycode 112 = KP_F2
keycode 63 = KP_F3
keycode 82 = KP_F4
keycode 86 = KP_Separator
De plus, assurez-vous que votre /etc/X11/XF86Config
contient
les lignes suivantes :
# ServerNumLock # doit être commenté
XkbDisable
Ceci s' applique à XFree 3.2
. Sauf si vous utilisez un
clavier standard américain (Qwerty), notez que XkbDisable
pose quelques petits problèmes. Vous les découvrirez par vous-même.
xjed
se fait en
ajoutant des lignes comme suit dans .Xdefaults
xjed*Geometry: 80x32+150+50
xjed*font: 10x20
xjed*background: midnight blue
Infos complémentaires en xjed.doc
contenues dans le logiciel.
Je suppose que vous avez la distribution TeTeX
. Quelques
trucs ici :
/usr/lib/texmf/texmf/tex/generic/config/language.dat
puis
lancez :
~# texconfig init ; texconfig hyphen
LaTeX
, après avoir ajouté
les fichiers sous /usr/lib/texmf/texmf/tex/latex/
lancez la
commande texhash
pour que TeTeX
reconnaisse le
nouveau paquet.
dvips
, le fichier à éditer est
/usr/lib/texmf/texmf/dvips/config/config.ps
. Soyez conscient
que les champs concernant la résolution par défaut déterminent aussi
le comportement de xdvi
. Si vous remarquez des créations
intempestives de polices (fonts) à chaque exécution, ajoutez dans
votre .Xdefaults
une ligne
XDvi*mfmode:
Je suppose que votre noyau est compilé avec le support de
PPP
et TCP/IP
, avec support du loopback
et
que votre logiciel pppd
est correctement installé (tout ceci
existe par défaut). Il y a dorénavant deux façons de faire fonctionner
PPP
: a) une configuration manuelle, et b) utiliser un
programme de configuration "auto-magique". Considèrons d'abord la
configuration manuelle.
Supposons que les spécifications de votre Prestataire de Services Internet (Internet Service Provider) soient les suivantes :
mbox.supernet.edu
supernet.edu
www.supernet.edu
Pour configurer manuellement vos connections PPP
, procédez
comme suit :
/usr/local/bin/ppp-on
qui sera
utilisé pour vous connecter à votre PSI:
#!/bin/sh
# fichier ppp-on: script de connection à un PSI
INIT=ATX3 # ou ce que votre modem exige
PHONE=1234567
/usr/sbin/pppd connect "/usr/sbin/chat '' $INIT OK ATDP$PHONE \
CONNECT '' " user Jean
puis rendez-le exécutable par chmod 755
/usr/local/bin/ppp-on
. Si votre PSI n'utilise pas le protocole
PAP, le script suivant s'applique :
#!/bin/sh
# fichier ppp-on: script de connection à un PSI
INIT=ATX3 # ou ce que votre modem exige
PHONE=1234567
/usr/sbin/pppd connect "/usr/sbin/chat '' $INIT OK ATDT$PHONE \
CONNECT '' 'ogin' John 'word' _Biz%_ar ''" /dev/modem 38400 \
modem defaultroute
/usr/local/bin/ppp-off
utilisé pour
terminer une session PPP:
#!/bin/sh
# fichier ppp-off
DEVICE=ppp0
if [ -r /var/run/$DEVICE.pid ]; then
kill -INT `cat /var/run/$DEVICE.pid`
if [ ! "$?" = "0" ]; then
echo "removing stale $DEVICE pid file."
rm -f /var/run/$DEVICE.pid ; exit 1
fi
echo "$DEVICE link terminated" ; exit 0
fi
# lien inactif
echo "$DEVICE link is not active" ; exit 1
puis rendez-le exécutable par chmod 755
/usr/local/bin/ppp-off
.
/etc/ppp/options
:
# /etc/ppp/options
/dev/modem
38400
lock
crtscts
modem
asyncmap 0
remotename www.supernet.edu
defaultroute
/etc/ppp/pap-secrets
:
# fichier /etc/ppp/pap-secrets # username remotehost secret Jean www.supernet.edu _Biz%_ar
/etc/resolv.conf
:
# fichier /etc/resolv.conf
search supernet.edu
nameserver 123.231.112.111
/etc/sendmail.cf
. Cherchez la ligne commençant
par DS
et remplacez-la par :
DSmbox.supernet.edu
PPP-HOWTO
.C'est tout pour la configuration manuelle. Il existe un programme
qui rend cette corvée dépassée. C'est ezppp
que vous
trouverez en
http://www.serv.net/~cameron/ezppp/index.html
; téléchargez-le
immédiatement!
Pour aller chercher votre courrier électronique sur un serveur
POP
, utilisez un client POP
tel que
fetchpop
ou fetchmail
. Ce dernier est probablement
la seule alternative si le serveur PPP
de votre
fournisseur a des problèmes avec la commande LAST
.
Pour configurer ces clients :
fetchpop
: la première fois que vous le lancer, il vous
demandera quelques informations. Répondez à ses questions et c'est
tout.
fetchmail
: adaptez cet exemple de
.fetchmailrc
:
# fichier $HOME/.fetchmailrc
poll mbox.supernet.edu with protocol pop3;
user jean there with password _Biz%_ar is jean here
mda "/usr/bin/procmail -f fetchmail"
Cette dernière ligne est peut être superflue. Vous devez mettre les
permissions de ce fichier avec chmod 600 .fetchmailrc
autrement fetchmail
refusera avec raison de démarrer.
Une fois que vous avez réussi à faire marcher X11 (bonne carte
graphique, etc.), il existe d'inombrables possibilités de
configuration; cela dépend de votre gestionnaire de fenêtres (window
manager). Dans tous les cas, il s'agit d'éditer un ou des fichier
fvwm
: copier /etc/X11/fvwm/system.fvwmrc
dans
votre répertoire comme .fvwmrc
; visualisez-le et
commencez à experimenter. Le fichier contribué system.fvwmrc
est à mon avis un peu trop simple et ne rend pas justice à
fvwm
.
fvwm95-2
: copiez /etc/X11/fvwm95-2/fvwm2rc95
dans
votre répertoire comme .fvwm2rc95
puis
éditez-le. L'exemple fourni est fort bon.
TheNextLevel
: c'est un peu plus dur à
configurer. Copiez /etc/X11/TheNextLevel/.*
dans votre
répertoire. Parcourez-les attentivement, essayez puis
adaptez-les. Le premier à regarder est .fvwm2rc.defines
.
De plus, soyez certain d'avoir un .xinitrc
correct. Par
exemple:
#! /bin/sh
# fichier $HOME/.xinitrc
# configurer le clavier correctement
usermodmap=$HOME/.Xmodmap
xset s noblank # turn off the screen saver
xset s 300 2 # screen saver start after 5 min
xsetroot -solid "medium blue" &
# rxvt est économe en mémoire, mais bogué:
# - Touche 'Début' et 'Fin' non reconnues
# - 'Arrière' et 'Suppr' ne fonctionnant pas bien
# - les couleurs ne sont pas proprement héritées de l'environnement;
# - problèmes avec l'environnement en général.
# xterm est donc mieux le plus souvent. Mais rxvt convient
# aux applications en couleurs telles que mc.
xterm -ls -bg black -fg white -sb -sl 500 -j -ls -fn 10x20 -fb 10x20bold \
-title "xterm en Couleurs" -geometry 80x25+150+0 &
fvwm95-2
D'après moi, une bonne alternative à g77
est le traducteur
Fortran vers C f2c
et son interface yaf77
. Obtenez ce
dernier depuis
ftp://sunsite.unc.edu/pub/Linux/devel/languages/fortran/yaf77-1.4.tgz
et ses mirroirs (NdT: notamment
ftp://ftp.lip6.fr/pub/linux/sunsite/devel/languages/fortran/yaf77-1.4.tgz
en France).
C'est une bonne idée de fournir aux nouveaux utilisateurs quelques
fichiers de configurations déjà prêts à leur première connection. Pour
cela, mettez en /etc/skel/
: .bashrc
,
.bash_profile
, .bash_logout
, .inputrc
,
.less
, .xinitrc
, .fvwmrc
, .fvwm2rc95
,
.Xmodmap
, .Xdefaults
, .jedrc
,
.joerc
, et .emacs
.
Les noms de ces fichiers commencent par un point initial.
Remarquez que .pinerc
n'est pas complètement
adaptable. Vérifiez toutefois que les champs user-domain
,
smtp-server
et nntp-server
y sont corrects.
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre