bash
Il faut distinguer deux cas de figure:
Il existe des shells non interactifs, mais ce n'est pas le lieu pour en parler.
Le premier cas se produit lorsque l'on ouvre une session.
bash
exécute, dans cet ordre:
/etc/profile
, s'il existe
~/.bash_profile
, s'il existe
~/.bash_login
, s'il existe
~/.profile
, s'il existe
Le premier fichier (configuration "system wide") sert à l'administrateur, qui va y placer des directives communes. Sa présence n'est pas obligatoire; si vous n'avez qu'un seul compte utilisateur sur votre machine, il n'est probablement pas utile. Quoique...
Chacun des trois autres fichiers permet à l'utilisateur de personnaliser son environnement. Seul est exécuté le premier trouvé dans le répertoire de l'utilisateur; l'existence de trois noms pour une même fonction a des raisons historiques.
Le deuxième cas se produit par exemple lorsqu'on lance xterm
;
alors, bash
exécute, dans cet ordre:
/etc/bash.bashrc
~/.bashrc
On retrouve la distinction entre fichier "global" et fichier "local".
Lorsqu'on quitte un shell, le fichier ~/.bash_logout
est exécuté, s'il existe. L'utilisateur peut y placer des commandes pour,
par exemple, supprimer des fichiers temporaires.
Je déconseille totalement le livre Learning the bash Shell, publié par O'Reilly: les exemples donnés sont soit niais, soit complexes et sans intérêt. Il est vraisemblable que le concept de pédagogie ne fait pas partie de l'arsenal intellectuel de ses auteurs.
On trouve sur le web un document intitulé Advanced bash scripting guide: très volumineux (plus de 500 pages), exhaustif, beaucoup de choses intéressantes mais noyées dans un fatras d'acrobaties sans utilité pour le lecteur moyen (comme moi).