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 interpr�teur de commandes 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 la capacit� de finir automatiquement les noms de fichiers que vous entrez (lorsque vous utiliser la touche Tab).

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 l'invite 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 � 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'occurrence 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 paquet distinct qui prend en main les interfaces de ligne de commande, en fournissant l'historique des commandes, et la capacit� � terminer automatiquement de noms de fichiers, 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. Ce qui signifie que les touches Effacement arri�re, Suppr, D�but et Fin 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 propre �diteur.

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. Aller plus loin

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:22