Les+fichiers+de+configuration+du+shell+draft
De Wiki de la communauté Mandriva.
Sommaire |
Introduction
Ce que permettent ces fichiers
- Lancer des commandes représentant des actions ou des paramétrages que vous voulez faire exécuter chaque fois que vous vous connectez à une interface graphique ou à une console
- Définir des alias (des abréviations de commandes complexes qui vous permettent de simplifier considérablement la frappe en console)
- Définir des fonctions (les fonctions vous permettent de créer vous-même vos propres commandes personnalisées utilisables en console)
- Fixer la valeur de certaines variables, notamment la variable PATH, qui dit au système où il peut trouver les commandes à lancer et la variable PS1, qui personnalise l'invite du shell
- Paramétrer le contenu et l'utilisation des fichiers d' historique du shell
- créer des raccourcis clavier personnalisés pour la console
- modifier la couleur des différents types de fichiers dans la sortie en console de la commande ls
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.
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 :
Exemple de réponse :
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.
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.
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
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
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 :
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 ...


