Les+fichiers+de+configuration+du+shell+draft

De Wiki de la communauté Mandriva.

Le Shell est une interface de commandes sur le système fournissant en lui même un ensemble d'utilitaires lors de la connection d'un utilisateur. Le Shell par défaut sur Mandriva Linux est BASH Bourne Again SHell Cette page vous aide à comprendre leur fonctionnement et éventuellement à les modifier pour adapter votre système à vos besoins ou à vos goûts, pour une session en terminal ou une session graphique, ils sont utiles. Si vous ne savez pas très bien comment modifier un fichier de configuration, jetez donc un coup d'œil pour commencer à la page Éditer des fichiers de configuration.

Sommaire

Introduction

Ce que permettent ces fichiers

À noter !
Il est tout à fait possible de placer dans certains des fichiers de configuration dont il est question ici des commandes qui n'ont rien à voir avec le shell lui-même. Il est également possible de lancer des actions que vous définissez depuis les utilitaires de bureaux kde, gnome, et autres.

Rappels sur l'environnement

Lorsqu'on démarre un shell, quelque soit le mode d'execution, nous retrouvons un environnement de travail pré-défini. C'est cet environnement que nous allons modifier, personnaliser. La définition de cet environnement vient configuré avec déjà de nombreux paramètres, nommées variables d'environnement. La commande ENV permet de lister cet ensemble de manière complète.

Image:Konsole.png
[utilisateur@ordi ~]$ env

Remarquez que la réponse à cette commande contient un grand nombre d'informations. Regardons la variable $PATH par exemple : celle ci permet de définir les chemins d'accès aux programmes. Ainsi au lieu de taper /usr/bin/firefox pour lancer le navigateur Firefox, nous pouvons directement taper firefox et voir le programme se lancer. Ainsi tout programme dont le chemin d'accès ne se trouve pas dans le $PATH devra être appelé en indiquant le chemin complet vers le programme. Observons notre $PATH :

Image:Konsole.png
[utilisateur@ordi ~]$ echo $PATH

Exemple de réponse :

Image:Konsole.png
[utilisateur@ordi ~]$ /usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/muny/bin

L'ordre de recherche va du premier au dernier, tout simplement. Cet ordre est important : il est par exemple fortement déconseillé de placer en premier /home/muny/bin, ou pire de placer en premier la seule valeur /home/muny...

Quels sont ils

shells

Le fichier de référence listant les shells disponibles sur votre système. En fait de disponibles, il s'agit des shells accessibles lorsque la commande chsh est utilisée : chsh pour change shell, un appel pour modifier le shell courant, va chercher dans ce fichier le shell demandé en argument. Si n'est pas présent, la commande retournera une erreur. Néanmoins un shell non présent dans ce fichier peux être fonctionnel (essayer chsh dash puis comparer en appellant directement dash...)

bashrc

Le fichier .bashrc contient l'ensemble des fonctions à exécuter lors de chaque ouverture de terminal. Donc chaque fonction ajoutée ici sera exécutée à chaque fois qu'on lancera une konsole, par exemple.

bash_profile

Le fichier .bash_profile contient l'ensemble des fonctions à exécuter lors d'une connection au système. Donc chaque fonction ajoutée ici ne sera qu'exécutée que lors d'un login sur le système, avec le gestionnaire graphique de connection kdm par exemple, ou encore sur un login dans une tty non-graphique.

profile

Plus général, /etc/profile est le plus important car il définit les variables primaires de l'environnement de travail. Ce fichier ne devrait plus être modifié aujourd'hui. A la place il est proposé une arborescence dédiée, plus simplement maintenable, plus lisible, et possédant un ordre d'éxecution. C'est donc /etc/profile.d/ que nous enrichirons avec des scripts personnalisés qui s'appliqueront lors de l'ouverture de session sur le système.

inputrc

Très spécifique, celui ci permet de configurer des raccourcis clavier et combinaisons de touches. Bien que n'étant pas lié à la configuration du shell proprement dit (il permet d'utiliser simplement la bibliothèqie readline), ses fonctionnalités et la personnalisation possible peuvent influer sur l'usage que nous faisons du shell.

bash_logout

Au fonctionnement similaire de bashrc, mais utilisé lorsque la session se termine, bash_logout sera donc utilisé afin d'insérer des fonctions jugées utiles lorsque l'utilisateur se déconnecte du système. (est inutile en cas de déconnection à une session graphique)

Comment intervenir

Les fichiers listés ci-dessus (hormis shells) peuvent exister en plusieurs exemplaires sur le système :

  • Un exemplaire de configuration initiale : utilisé comme modèle lors de la création d'un nouveau compte utilisateur
  • Un exemplaire de configuration générale, situé comme les autres fichiers de configurations systèmes dans le répertoire /etc
  • Un exemplaire de configuration utilisateur : situé dans le home_dir de chaque utilisateur, laissant à ce dernier toute liberté personnelle de configuration.

En découle, pour l'organisation, un ordre d'exécution de chacun. L'ordre d'éxecution est le suivant : /etc/profile, puis les fichiers du home_dir propre à chaque utilisateur : en premier profile, puis bash_profile s'il s'agit d'un shell de connection, et enfin bashrc s'il s'agit pas d'une connection mais simplement d'une ouverture d'un terminal. (à noter que lorsqu'il s'agit des deux cas à la fois ces deux derniers fichiers seront pris en compte. Tandisque s'il ne s'agit que d'un lancement de shell bash, seul bashrc le sera, donc, ok !)

Utilisateur

Chaque utilisateur possède une version de ces fichiers dans son home_dir. Si ces fichiers n'existent pas encore, vous pouvez vous les créer : ils seront correctement interprétés lors de la prochaine session. Chaque utilisateur est donc invité à effectuer ses propres modifications dans son fichier personnel : ceci à l'avantage de la liberté d'usage, libres d'ajouter nos alias, nos commandes, nos dessins ascii rigolos, nos fonctions, etc ... sans impacter les éventuels autres utilisateurs du système.

Image:Konsole.png
[utilisateur@ordi ~]$ ls -a |grep bash

Administrateur

L'administrateur du système (root par défaut, qui à tout les droits) peux lui aussi avoir ses propres fichiers, dans son home_dir. Il pourra également définir des préférences qui impacteront alors tout les utilisateurs du système. Pour ses propres fichiers le principe est le même que pour tout autre utilisateur. Pour intervenir sur l'ensemble du système, root pourra modifier divers fichiers.

Skel, le squelette

Le squelette à créer automatiquement lorsqu'un nouvel utilisateur est crée sur le système. Ce squelette peut être enrichi à loisir.

Image:Konsole.png
[root@ordi ~]# ls -a /etc/skel/

Dans ce répertoire, les fichiers maîtres qui serviront de références pour la création par défaut des fichiers utilisateurs.

Profile, le profil général

Nous ne modifions donc plus le fichier /etc/profile. A la place nous utilisons des fichiers spécifiques dans le sous répertoire /etc/profile.d/. A noter qu'il est fortement conseillé de ne pas toucher non plus le fichier /etc/bashrc, et d'employer aussi à la place des fichiers spécifiques ici, dans /etc/profile.d/

Exemples d'utilisation

Exemples simples

Historique des connections en information immédiate pour l'utilisateur

Image:Konsole.png
[root@ordi ~]# echo "last |grep \$USER" >> /etc/skel/.bash_profile

Pour la création de nouveaux utilisateurs : indiquera à chaque utilisateur (grâce à une création initiale et automatique de leur .bash_profile basé sur ce modèle) lors de chacune de leur connection, l'historique de leur précedentes connections : tty, date, heure de début, heure de fin, temps total

Ascii art Logo

Ajouter un logo à la fin du fichier .bashrc

Image:Konsole.png
[utilisateur@ordi ~]$ cat > ~/.bashrc << "EOF"

echo "

                                                                #####
                                                               #######
                  @                                            ##O#O##
 ######          @@#                                           #VVVVV#
   ##             #                                          ##  VVV  ##
   ##         @@@   ### ####   ###    ###  ##### ######     #          ##
   ##        @  @#   ###    ##  ##     ##    ###  ##       #            ##
   ##       @   @#   ##     ##  ##     ##      ###         #            ###
   ##          @@#   ##     ##  ##     ##      ###        QQ#           ##Q
   ##       # @@#    ##     ##  ##     ##     ## ##     QQQQQQ#       #QQQQQQ
   ##      ## @@# #  ##     ##  ###   ###    ##   ##    QQQQQQQ#     #QQQQQQQ
 ############  ###  ####   ####   #### ### ##### ######   QQQQQ#######QQQQQ

" EOF

Fortune, de sympathiques citations

Avec une petite vache pour les raconter :

Image:Konsole.png
[utilisateur@ordi ~]$ echo "fortune |cowsay" >> ~/.bashrc

Exemples de la page d'origine, plus complets et complexes

---> Placez ici les exemples plus complexes données sur la page d'origine ! Entre autre sur inputrc, etc etc ...