|
|
Les fichiers de configuration du shell BashSommaire :
Différences entre les fichiers de configurationLes fichiers de configuration du shell se distinguent de quatre façons (au moins) : I. Par les utilisateurs concernés
II. Par le type de shell qui les lit en démarrant- shell interactif ou non interactifLorsque le shell exécute un script, il lit des lignes de code dans un fichier, il n'est pas alors, en général, 'à l'écoute' de ce que vous tapez en console : on dit dans ce cas que le shell est non interactif. - shell de connexion (en anglais 'login shell') ou shell sans connexion ('non login shell')Le shell varie selon le type de la console dans laquelle vous l'invoquez. Il faut distinguer à cet égard :
Parmi les fichiers de configuration mentionnés plus haut, les suivants ne sont lus QUE par des 'login shells' :
Tous les autres fichiers mentionnés plus haut (/etc/bashrc ou ~/.bashrc et les fichiers '*.sh' de '/etc/profile.d') sont en revanche lus et par les login shells et par les non login shells : toute modification que vous y introduirez vaudra donc quelle que soit la console que vous utiliserez. III. Par le fait que le shell concerné est lui-même ou non un processus enfant d'une autre instance du shellLes fichiers '/etc/profile' et '~/.bash_profile' ne sont lus qu'au premier lancement d'un login shell, si ensuite Bash s'appelle lui-même et lance un 'shell enfant' ces fichiers ne sont pas lus une seconde fois. Au contraire '/etc/bashrc' et '~/.bashrc' sont lus à chaque nouvel appel du shell. De même '~/.bash_logout' est lu en fin de connexion par un shell qui n'est pas lui-même enfant d'un autre shell : il est donc lu au moment où vous quittez le shell complètement (et en général il va effacer le contenu de l'écran). IV. Par la variété de shell utiliséeTous les fichiers de configuration dont il est question ici sont lisibles par un shell Bash mais tous ne le sont pas par d'autres types de shells, attention, pensez donc à vérifier ce qu'il en est si vous avez recours à d'autres sortes de shells (Korn shell, C-shell etc.).Comment se rendre compte de tout cela par soi-mêmePour bien vous rendre compte de tout cela un moyen très intuitif consiste à modifier chacun des fichiers : de la façon suivante : mettre au tout début de chaque fichier une ligne de ce type echo /chemin/nom_du_fichier DEBUT et en dernière ligne ceci : echo /chemin/nom_du_fichier FIN (naturellement vous mettrez à la place de '/chemin/nom_du_fichier' l'information appropriée pour chaque fichier, par exemple '/etc/profile' pour le premier fichier, /home/toto/.bash_profile pour le second si votre nom d'utilisateur est 'toto' etc.). Ensuite, lancez le shell, dans une console 'tty', puis dans une console graphique. Relancez-le plusieurs fois par des commandes 'bash' successives (tapez 'bash' puis ENTREE, ce qui lancera un processus shell enfant), puis sortez par des commandes 'exit' successives, jusqu'à ce que vous vous retrouviez dans l'état initial, regardez bien tout ce qui s'affiche et vérifiez que cela illustre ce qui a été dit plus haut… Passez sous 'root' et voyez (très prudemment) ce qui se passe en console lorsque vous effectuez le même genre d'essais que précédemment. Qui lance quoi ?En lisant le contenu des scripts, comme en examinant les messages affichés par les lignes de commande 'echo' que vous avez ajoutées, vous verrez que :
Si vous souhaitez définir des alias pour tous les utilisateurs, pensez donc à utiliser /etc/profile.d/alias.sh. Un mot sur 'inputrc'Un autre fichier de configuration est important pour le shell : le fichier '/etc/inputrc' qui configure la bibliothèque 'Readline', laquelle est utilisée par le shell pour l'interprétation des touches ou combinaisons de touches du clavier. La Base de Connaissances de Mandriva contient un exemple de configuration personnalisée d'inputrc. Sur des indications pour configurer 'inputrc' voir cette page de la Gazette Linux - Comment créer des raccourcis clavier sur les consoles Linux. Attention, n'essayez pas d'introduire des commandes 'echo' dans ce fichier : les messages ne s'afficheraient pas et 'Readline' tenterait de comprendre les lignes de code que vous auriez ajoutées comme des commandes d'interprétation du clavier qui perturberaient son bon fonctionnement. Le fichier 'inputrc' contient essentiellement :
"\e[F": end-of-line étant donné que '\e' remplace '^[' cette ligne équivaut à "^[[F": end-of-line et comme nous savons que '^[[F' représente ce que renvoie la touche FIN, il s'ensuit que cette ligne signifie simplement que la touche FIN doit activer la fonction 'end-of-line', c'est-à-dire la fonction 'aller en fin de ligne'. Noter enfin que, selon les types de console, les caractères renvoyés par certaines touches peuvent différer, par exemple la touche FIN renvoie, comme nous l'avons vu, '^[[F' sous 'Konsole' mais '^[[8~' sous 'rXVT'. '/etc/inputrc' régit l'ensemble des utilisateurs de votre système, si nécessaire vous pouvez créer un fichier '~/.inputrc' pour un utilisateur particulier. Muni de ce bagage substantiel, vous pourrez maintenant explorer et éventuellement modifier votre 'inputrc'… L'historique des commandesLe fichier '~/.bash_history' contient une liste des commandes précédemment tapées en console. Pour l'utilisation de cette fonctionnalité et des indications permettant de la paramétrer voir L'historique du shell et suivre les différents liens que vous y trouverez. Modifier l'affichage du contenu d'un répertoire par 'ls'Les couleurs et divers aspects de l'affichage à l'écran de la sortie de 'ls' sont déterminés par le fichier de configuration /etc/DIR_COLORS pour l'ensemble du système et par ~/.dir_colors pour un utilisateur. Voir là-dessus : Comment modifier les couleurs des listes affichées par 'ls'. Précautions à prendre lors de modifications de fichiers de configurationQuelques remarques de bon sens, mais très importantes : 1) Ne faites pas 'n'importe quoi', renseignez-vous aux meilleures sources avant d'agir blablabla #TD # bliblibli #TD Pour le shell Bash les commentaires sont précédés d'un dièse (#), pour certains autres fichiers de configuration du système les commentaires peuvent être codés différemment, pensez-y à l'occasion... Si vous suivez systématiquement ces procédures, vous resterez maître de la situation… sinon… j'en frissonne… Lors d'une mise à jourBeaucoup d'installations possèdent une partition racine pour le système ("/") et une autre partition pour les comptes utilisateur ("/home"). Vérifiez si c'est le cas pour votre système à l'aide de la commande 'df'. S'il en est ainsi, et si au moment d'installer une nouvelle version de Mandriva vous choisissez de ne mettre à jour que la partition racine en laissant intacte la partition "/home", alors, après mise à jour vous conserverez les modifications que vous aviez introduites dans les fichiers de configuration utilisateur (ceux dont les chemins commencent par "~/"), mais vous perdrez les modifications effectuées sur les autres fichiers. Bien entendu vous ne les perdrez pas vraiment, car je ne vous ferai pas l'injure de penser que vous avez oublié de faire une sauvegarde générale avant la mise à jour… Vous pourrez donc ouvrir les anciens fichiers et rapatrier vos anciennes modifications sur les nouveaux fichiers de configuration. Mais attention ne faites surtout pas un copier-coller général de l'ancien fichier vers le nouveau car, dans la nouvelle version, Mandriva a très bien pu modifier les fichiers de configuration système !! Ne recopiez que vos modifications, si elles vous conviennent encore, et tout ce qui a été dit plus haut reste valable : sauvegardez le fichier originel, faites en sorte de pouvoir retrouver facilement vos modifications à l'intérieur du fichier, et réintroduisez-les progressivement en les testant car dans le nouveau système on ne peut exclure que certaines d'entre elles aient des conséquences différentes… Prudence donc, comme toujours, lorsqu'on modifie les fichiers qui gèrent l'ensemble du système. Auteur : ptyxs (décembre 2005) |