Travaux Pratiques n°1

Instructions

Ces travaux pratiques sont à effectuer seul et un compte-rendu (réponses aux questions plus tout commentaire supplémentaire que vous jugerez utile) est à envoyer à serpaggi@emse.fr dès la fin de la séance de TP.

Pour faciliter la réception et le traitement, le message devra avoir un sujet (Sujet ou Objet selon le logiciel utilisé) formaté comme suit :
[MSGL Shell] TP1 Prénom Nom.

Obtenir la documentation

Pour réaliser ces travaux pratiques, vous aurez besoin de lire attentivement la page de manuel de l'interprète1 de commandes bash.

Vous disposez bien entendu de cette page de manuel sur votre système. Cependant, selon la configuration dont vous disposez il peut être difficile d'y accéder. La commande suivante devrait vous permettre d'afficher cette page dans n'importe quelle condition. Nous verrons ensuite comment améliorer les choses.

#> man -s 1 -M /usr/man bash

Configuration et invocation de Bash

L'interprète de commandes Bash peut être configuré de manière très approfondie. Nous allons aborder ici les bases de cette configuration pour vous permettre de vous construire un environnement agréable, adapté à vos besoin et à votre personne.

Localiser les fichiers de configuration de l'interprète

De nombreuses commandes sont configurées via l'utilisation de variables d'environnement en plus d'utiliser des fichiers de configuration. L'interprète de commande en est un exemple.

En général ces variables sont positionnées à chaque connexion pour que l'utilisateur s'y retrouve d'une fois à l'autre. Un endroit de choix pour positionner ces variables est un des fichiers de configuration de l'interprète de commandes. Nous allons apprendre à identifier et à modifier ces variables.

  1. Localiser les fichiers de configuration de Bash (tant au niveau système qu'au niveau de chaque utilisateur ; pour cela aidez vous de la page de manuel de bash.
  2. Combien y en a-t-il (donnez la liste pour le système et pour un utilisateur) ?
  3. Quels sont ceux à modifier et dans quels cas ?
  4. À quoi correspond l'option -l et que permet-elle de modifier ?

Modification de l'environnement courant

Quand on configure son interprète de commandes, il est pratique de pouvoir tester/bénéficier de ces modifications immédiatement. Pour cela il est possible de fermer le shell et de le relancer, mais il est également de faire cela en place comme nous allons le voir ci-dessous.

  1. Affichez le contenu de toutes les variables définies sur votre système et notez le contenu des variables SHELL, PATH, MANPATH et PS1. Vous aurez besoin des commandes export et set.
  2. Modifiez le prompt, directement dans le shell, pour qu'il affiche le nom de l'utilisateur, le nom de la machine et le chemin complet du répertoire courant comme dans l'exemple suivant :
    serpaggi@cacahuete:/users/chic/serpaggi/>.
  3. Ajoutez les répertoires /opt/sfw/bin et /opt/sfw/sbin à votre variable PATH.
  4. À l'aide de la commande unset, supprimez la variable MANPATH. Vous devriez dès à présent être capable de lire n'importe quelle page de manuel sans avoir à spécifier l'option -M à man.
  5. Pour rendre pérennes ces modifications, vous allez les inscrire dans un des fichiers de configuration de Bash. Choisissez correctement le fichier en question et expliquez ce choix. Dans ce fichier, modifiez les entrée pour les variables déjà présentes (PATH, MANPATH, ...) et ajoutez des entrées pour celles qui ne le serait pas (PS1 et PAGER2 par exemple).
  6. Exécutez la commande /bin/bash fichier-de-config en remplaçant le fichier fichier-de-config par le nom du fichier que vous avez modifié. Votre environnement original a-t-il été modifié ? Pourquoi ?
  7. Lisez la page de manuel de bash, section COMMANDES INTERNES DU SHELL, pour savoir comment modifier l'environnement courant.
    Qu'est-ce que cela illustre sur le fonctionnement d'un interprète de commandes ?

Configurations internes

Votre interprète peut être configuré de manière très poussée. Nous allons nous attarder ici sur quelques commandes internes : set, shopt, ulimit et umask.

ulimit

ulimit permet de modifier le comportement de l'interprète de commandes, surtout en ce qui concerne l'aspect ressources du système.

Pour vous rendre compte de ce qu'il est possible de modifier via ulimit, intéressez-vous à la sortie de la commande suivante :

#> ulimit -a

Limitez la taille du fichier core à 0. Pour savoir comment faire, ... ah mais non ! Vous savez à présent comment vous documenter !

umask

Vérifiez la valeur actuelle du masque avec la commande umask et modifiez la éventuellement. Faites apparaître cette modification dans le fichier de configuration de votre interprète pour qu'elle soit prise en compte à la prochaine utilisation.

shopt

shopt permet de modifier la façon dont votre interprète se comporte vis à vis de vos interactions (ceci est une approximation, mais qui est valable). Intéressez-vous particulièrement à la valeur des options suivantes : cdspell ; cmdhist ; histappend ; mailwarn ; no_empty_cmd_completion ; progcomp. Bien que nous n'ayons pas encore vu le concept, vous pouvez également lire la description de l'option huponexit ;

set

set permet de modifier le comportement de l'interprète au niveau de l'interaction avec le système (commandes, ...)

Intéressez-vous particulièrement aux options suivantes : -a ; -b ; -h (à mettre en relation avec la commande interne hash) ; -m ; -o history ; -x ; -C ; -H ; -P.

Ces options en particulier ne vous sont pas exposées pour que vous les modifiez absolument mais plutôt pour que vous sachiez qu'elles existent et que, le jour venu, vous puissiez vous en servir.

Conclusion

Vous savez à présent où et comment se configurent les principaux aspects de votre interprète de commandes.

Vous ne pouvez pas faire les bons choix dès le départ et de toutes manières, il n'existe pas de bons choix. L'expérience et les besoins guideront vos options de configuration dans le temps. L'essentiel pour vous est de savoir où chercher.


1 : Interprète ou interpréteur ? Interpréteur est un néologisme qui est dû à l'anglais interpreter qui se traduit pourtant en français par interprète. À vous de choisir.

2 : La variable PAGER permet de donner le chemin d'un afficheur de document. Elle est utilisée par la commande man pour afficher les pages de manuel. Par défaut c'est la commande more qui est utilisée. Vous pouvez en choisir une autre plus agréable.

3 : Un fichier core est un fichier qui est généré par le système lorsqu'une application plante. Il peut être intéressant lors des développements d'applications d'avoir un tel fichier sous la main pour déterminer pourquoi il y a eu ce plantage. Cependant, dans la majorité des cas, on oubli qu'il est généré et comme il est volumineux, il mange beaucoup d'espace disque.