Page suivante Page précédente Table des matières

11. Bash

Si vous donnez à login une combinaison valide de nom d'utilisateur et de mot de passe, il ira regarder dans /etc/passwd pour savoir quel shell vous donner. La plupart du temps, dans un système Linux, ce sera bash. Le travail de bash consiste à lire vos commandes et voir ce sur quoi elles agissent. C'est à la fois une interface utilisateur, et l'interpréteur d'un langage de programmation.

Dans son rôle d'interface, il lit vos commandes, et les exécute lui-même si ces commandes sont ``internes'', comme cd, ou bien trouve et exécute un programme s'il s'agit de commandes ``externes'' comme cp ou startx. Bash propose également plusieurs options fort sympathiques comme un historique des commandes, ou le complètement automatique des noms de fichiers (avec la touche de tabulation).

Nous avons déjà vu bash à l'action dans son rôle de langage de programmation. Les scripts qu'init lance pour démarrer le système sont généralement des scripts shell, et sont exécutés par bash. Avoir un langage de programmation propre, parallèlement aux utilitaires systèmes disponibles depuis la ligne de commande forme une combinaison très puissante, si vous savez ce que vous faites. Par exemple ("séquence frime" !) j'ai eu besoin l'autre jour d'appliquer une pile entière de correctifs (patches) à un répertoire de codes source. J'ai été capable de le faire en une seule commande, la suivante :

for f in /home/greg/sh-utils-1.16*.patch; do patch -p0 < $f; done;

Ceci recherche tous les fichiers de mon répertoire personnel dont les noms commencent par sh-utils-1.16 et finissent par .patch, puis affecte un par un ces noms à la variable f et exécute les commandes invoquées entre do et done. Il y avait en l'occurence 11 correctifs, mais il aurait pu aussi bien y en avoir 3000.

11.1 Configuration

Le fichier /etc/profile agit sur le comportement de bash au niveau du système entier. Ce que vous mettez dans ce fichier affectera toute personne qui utilise bash sur votre système. Cela sert par exemple à ajouter des répertoires dans la variable PATH, ou à définir celui de la variable MAIL.

Le comportement par défaut du clavier laisse souvent à désirer. En fait, c'est readline qui contrôle cela. Readline est un package distinct qui prend en main les interfaces de ligne de commande, en fournissant l'historique des commandes, et le complètement automatique de noms de fichiers (NDT : Touche TAB sous Bash), tout comme les facilités évoluées d'édition de ligne. Il est compilé dans bash. Par défaut, Readline est configuré à l'aide du fichier .inputrc, dans votre répertoire personnel. La variable INPUTRC peut être utilisée pour outrepasser les règles de ce fichier pour le bash. Par exemple, dans Red Hat 6, INPUTRC reçoit la valeur /etc/inputrc dans le fichier /etc/profile. Cela signifie que les touches Retour Arrière (Backspace), Suppr (Delete), Début (Home) et Fin (End) fonctionnent correctement et pour tout le monde.

Une fois que bash a lu le fichier de configuration général, commun au système entier, il recherche votre fichier de configuration personnel. Il teste l'existence des fichiers .bash_profile, .bash_login et .profile dans votre répertoire personnel. Il lance le premier qu'il trouve. Si vous voulez modifier le comportement de bash à votre égard, sans le changer pour les autres, faites-le ici. Par exemple, de nombreuses applications utilisent les variables d'environnement pour contrôler leur fonctionnement. J'ai une variable EDITOR contenant la valeur vi pour pouvoir utiliser vi sous Midnight Commander (un excellent gestionnaire de fichier orienté console) au lieu de son éditeur propre.

11.2 Exercices

Les bases de bash sont faciles à apprendre. Mais ne vous y limitez pas : on peut aller incroyablement loin avec. Prenez l'habitude de rechercher de meilleures façons de faire les choses.

Lisez des scripts shell, analysez les choses que vous ne comprenez pas.

11.3 Plus d'informations


Page suivante Page précédente Table des matières