Le shell, comme tous les logiciels "importants", utilise des fichiers de paramétrage exécutés lors de son lancement. Le shell utilise plusieurs niveaux de paramètrage : un paramétrage global pour le site et un paramétrage personnel lié au compte de l’utilisateur. Le shell distingue aussi plusieurs “modes” d’exécution: les shells dits de connexion (login shell), les shells interactifs dont l’entrée et la sortie standard sont liées à un terminal et les shells non interactifs. En fonction du type de shell, différents fichiers de paramétrage seront utilisés.

De façon générale, les fichiers de configuration globale comme /etc/profile sont exécutés en premier. Ce fichier, tenu à jour par l’administrateur, permet d’initialiser des variables (PATH...), de fixer des comportements par défaut (umask...) et d’exécuter toute action commune à tous les utilisateurs.

Ensuite, le shell interprète les fichiers de configuration propres à chaque compte utilisateur: (.bash_profile, .bash_login, .profile ou .bashrc) situés dans le répertoire de connexion de l’utilisateur. Ces fichiers jouent un rôle analogue à /etc/profile en permettant à chaque utilisateur de personnaliser sa phase de connexion. Chacun peut donc définir ou compléter ses propres variables et alias pour toute la session. Notamment vous pouvez définir votre propre invite de commande en modifiant la valeur de la variable PS1, ajouter des chemins supplémentaires d’accès à des programmes en modifiant la variable PATH...

Quel que soit le shell exécuté, diverses options permettent de paramétrer son fonctionnement. Comme toute commande, les options peuvent être précisées lors de l’appel (bash -option) mais le shell offre en plus la possibilité de positionner ou de retirer la plupart de ces options dynamiquement grâce à la commande set. Le shell offre la possibilité de choisir entre la syntaxe d’édition de emacs et celle de vi qui sont les deux éditeurs les plus répandus sur Unix. Le choix de emacs est le plus judicieux car ce type d’éditeur est en mode insertion automatique alors qu’avec vi, il faut alterner entre un mode saisie et un mode commande en utilisant la touche ESCAPE et diverses commandes d’insertion et d’ajout. En choisissant emacs comme éditeur de la ligne de commande avec la commande set -o emacs dans un fichier de configuration, vous pourrez utiliser les raccourcis emacs pour taper vos commandes. Par exemple CTRL-A vous mettra au début de la ligne de commande, CTRL-E à la fin et CTRL-D effacera le caractère courant. Notez que vous avez vu d’autres raccourcis clavier utiles pour la ligne de commande dans la page de cours sur l’historique. La commande set -o ignoreeof n’autorise plus les déconnexions par CTRL-D et force l’utilisation de exit.

Il est possible aussi de demander au shell d’afficher les commandes avant leur exécution. C’est ce que l’on appelle le mode trace. Pour activer le mode trace, il faut taper la commande: set -x. Le mode trace est en général utilisé pour observer ce qui est réellement exécuté par le shell en cas de doute. C’est pour cela que ce mode n’est généralement pas activé par défaut dans les fichiers de configuration. Pour sortir du mode trace, il faut utiliser la commande set +x.

Modification des paramètres du shell. Si vous voulez modifier les paramètres par défaut du shell, par exemple la variable PATH ou encore votre invite de commande correspondant à la variable PS1, il faut modifier les valeurs des variables à la fois dans le shell courant mais aussi dans tous les autres shells que vous démarrerez par la suite dans les fenêtres de terminal. Pour faire cela, il faut que la commande de modification de la variable soit écrite dans le fichier .bashrc qui est lu au démarrage du shell. Ainsi les modifications seront effectuées à chaque démarrage du shell dans une fenêtre de terminal.

Contenu d’approfondissement. On distingue deux types de fichiers de configuration:

Pour ceux et celles qui désirent connaître le fonctionnement complet, l’algorithme suivant décrit comment bash exécute ses fichiers d’initialisation. Si l’un de ces fichiers existe mais n’est pas accessible en lecture, bash signale une erreur. Deux cas sont montrés selon que le shell est de connexion ou non. Pour complétude, le deuxième cas peut être divisé encore en deux sous-cas ; nous ne le ferons pas ici (cf. pages du manuel en ligne bash).

Dans le cas des shells de connexion, au login :

L’option -noprofile de bash permet d’empêcher la lecture de ces fichiers. À la sortie du shell:

Dans le cas des shells interactifs, au démarrage :

En regardant les fichiers cachés présents par défaut à la création de votre compte, vous pouvez remarquer que c’est le fichier .bash_profile qui est utilisé. En visualisant le contenu de ce fichier, vous pouvez observer que le fichier .bashrc est appelé. Donc, par défaut, quel que soit le shell bash exécuté, le fichier .bashrc est utilisé. Par conséquent, si vous désirez modifier l’initialisation de votre compte, modifier le fichier .bashrc devrait suffire dans la grande majorité des situations.

 
 
Retour à la page de cours