Les scripts
et fichiers de configuration

© 1996-2001 Michel Luc
date de création : 06 Janvier 1997



Permission vous est accordée de faire des copies et de distribuer ces copies sous les termes de la licence GNU FDL.


Menu: le Shell et les commandes Index Linux Les fichiers de configuration

Shells  et  shell-scripts


Le bourne shell conçu par Steve Bourne en 1970 a été remplacé par le shell bash (Bourne Again SHell) qui est devenu le standard sous Linux et est inclu dans toutes les distributions.
Mais vous pouvez utiliser un autre Shell, voir même un shell différent pour chaque utilisateur.


1.1-Différents shells

shell chemin invite link
bash /bin/bash  # /bin/sh
tcsh /bin/tcsh   > /bin/csh
ash /bin/ash  $  
zsh /bin/zsh  %  
L'invite (prompt) "#", s'obtient en définissant les valeurs de la variable PS1, soit dans le fichier /etc/profile ou $HOME/.bash_profile, comme suit :
PS1='\h \W \# '  , ce qui correspond à \nom_de machine\répertoire_courant\ #

Si vous voulez tester les différents shells, vous pouvez créer autant de comptes utilisateurs que vous avez de shells et en attribuer un différent à chaque utilisateur.

Les shells bash et tcsh reconnaissent un login shell des autres shells. Login shell, c'est quoi ?
Le login shell est le shell appelé au lancement du système, par la suite si vous (ou plutot les applications) faites appel à un shell : Ce ne sera pas le login shell mais une seconde instance du shell.


1.2-Notion sur le shell

Vous discutez avec vôtre système par l'intermédiaire d'un interpréteur de commandes : Le shell.

_La commande echo : Elle dirige les messages vers l'écran (affichage). La preuve ? essayez :
# echo Salut
essayez aussi :
# echo HOME
On peut lui demander de nous afficher le contenu d'une variable ! Essayez :
# echo $HOME

La varialble PS1 : Elle définit l'invite principale de vôtre shell :
Pour connaitre ses parametres faites donc :
# echo $PS1
Vous devez avoir quelque chose comme : \h:\w\$ cela correspond à hostname : chemin invite.
essayez :
# PS1="Salut droopy"
et pour remettre l'invite par défaut vous devez retaper ce que 'echo $PS1' vous a indiqué.
# PS1="\h:\w\$"

La variable PATH : C'est la variable d'environnement qui permet au système de savoir où trouver vos commandes (/bin/...binaires).
Par exemple lorsque vous lancer la commande ls, le système va la chercher dans /bin/ls .
Cette variable est défini dans le fichier /etc/profile et ne concerne que les binaires, dont le chemin peut-être :

                                                    /bin/
                                                   /usr/bin/
                                                  /usr/local/bin/
... ou presque... mais...
 Pour savoir ce qui est défini dans vôtre PATH :
                                                 # echo $PATH
En plus de ces répertoires il y a dans le PATH un point '.' qui signifie 'répertoire courant'.
Ce qui vous permet de lancer vos shell-scripts depuis leur répertoire (sans avoir à les placer dans un des répertoires de binaires) : Si ce point '.' n'existe pas dans le PATH, vous ne pourrez pas lancer vos shell-scripts depuis leur répertoire (courant), sauf en faisant précéder la commande par " ./ ".


1.3-Les shell-scripts

Un shell-script ( ou un script shell ),qu'est-ce que c'est ?
Par exemple, en supposant que vôtre CD-Rom soit vôtre disque /dev/hdc (E:) et qu'il soit monté sous /cdrom/, et si vous devez monter sa partition en entrant la commande suivante :
# mount -t iso9660 -o ro /dev/hdc /cdrom
Au préalable vérifier le lien symbolique de /dev/cdrom vers /dev/hdc :
# ls -l /dev/cdrom
Si ce lien n'existe pas vous devez le créer :
# rm -f /dev/cdrom  détruire /dev/cdrom s'il existe mais ne pointe pas vers /dev/hdc
# ln -sf /dev/hdc /dev/cdrom
Ne pas oublier de créer le répertoire /cdrom/ :
# mkdir /cdrom
Et vous pouvez alors, pour monter le CD-Rom taper :
# mount -t iso9660 -o ro /dev/cdrom /cdrom
Maintenant vous pouvez écrire un script pour automatiser le montage du CD-Rom.
Oui !.. Avec vos petits doigts et un éditeur..!

«cdon» sera le nom du script suivant:
tapez # jed /droopy/cdon (ou vi /droopy/cdon, ou emacs /droopy/cdon) et écrivez ce qui suit :

#!/bin/sh
# /sbin/cdon montage de mon CDRom
# placer le script cdon avec les binaires dans /sbin/ (ou mieux dans $HOMME/bin/ ou encore /usr/local/bin/)
#
echo ' Montage du CD-Rom'
mount -t iso9660 -o ro /dev/cdrom /cdrom
#
echo 'Fin du montage'
ls /cdrom
# Fin du script cdon
  Note: le signe # dans le script permet de placer des commentaires :  
      Ce n'est pas l'invite ! .N'enlevez pas la première ligne #!/bin/sh,  cela 
       identifie le shell pour lequel le script est écrit.          
Une fois sauvegarder il ne reste plus qu'a le rendre executable (permission executable et lisible) :
A l'aide de la commande chmod en tapant : # chmod 755 /sbin/cdon
Si vous préférez laisser ce script dans votre répertoire "d'essais" (droopy par exemple) :
Il suffit de se placer dans /droopy/ pour executer cdon ou de taper # /droopy/cdon
Ou si vous n'avez pas ajouté le point "." au PATH, tapez ./cdon (sous /droopy/).
Nous aurons l'occasion de reparler de chmod dans l'introduction aux droits d'accès.
Mais pour utiliser les commandes que vous connaissez maintenant, vous allez réaliser un script qui affichera le contenu de vos fichiers de configuration après les avoir copier dans /droopy/config.perso ( pourquoi pas ?).
Ce script s'appellera 'ma.conf' :

#!/bin/sh
# /droopy/ma.conf affichage de mes fichiers de configuration
#
echo 'Recuperation des infos de fstab, inittab et ld.so.conf .'
# copie des fichiers dans config.perso
cat /etc/fstab /etc/inittab /etc/ld.so.conf >/droopy/config.perso
# affichage du nombre de lignes écrites dans config.perso
wc -l /droopy/config.perso
# affichage du contenu de config.perso
less /droopy/config.perso
#Et pourquoi pas l'imprimer ?
lpr config.perso
# Fin du script ma.conf

Et puis...
Même chose : # chmod 755 /droopy/ma.conf  ou chmod u+rx /droopy/ma.conf , ces commandes rendent ma.conf lisible et éxecutable.

Alors ! pour executer ce script en lançant la commande ma.conf : Vous avez plusieurs possibilités.
_Vous allez dans /droopy/ et vous tapez ma.conf ou ./ma.conf ?
_Vous restez où vous etes et vous tapez /droopy/ma.conf ?
_Vous ajoutez vôtre répertoire droopy au PATH ou/et le point "."?
.... Cela ne vous plait pas ?...! Il y a une autre solution ?... Créer un lien symbolique dans un répertoire de binaires.
Nous approfondirons les liens en même temps que les droits d'accès...!
Mais essayez cela :
# ln -sf /droopy/ma.conf /sbin/goconf
Allez voir dans /sbin/ ce qui c'est passé...?
Il vous suffit maintenant de tapez # goconf
Et cela même si vous n'avez pas le point "." et/ou le chemin "/droopy" dans le PATH.

Bien... pas de question..?

Les scripts les plus importants sont les scripts d'initialisation qui sont automatiquement exécutés par le shell au lancement du système, pour configurer vôtre environnement ( nous allons y venir... bientôt.).
Suivant le shell et la distribution utilisés les scripts d'initialisation se trouveront dans /etc/, /etc/rc.d, /etc/rc* ou dans /etc/rc.d/init.d .

Il existe également des fichiers de configuration de votre environnement :

pour bash : /etc/profile 
            $HOME/.bash_profile
            $HOME/.bashrc
pour tcsh : /etc/csh.login
            $HOME/.tcshrc
            $HOME/.login
Ne vous inquiètez pas si vous ne trouvez pas exactement ces fichiers cachés(le nom) dans vôtre répertoire personnel ($HOME) : Les shells utiliseront par défaut : pour bash, ".profile" et pour tcsh, ".tcshrc".


1.4-Conclusion

Le shell est beaucoup plus que la simple description que je viens d'en faire.
Et la programmation shell est relativement complexe.
Aussi pour approfondir le sujet et aquérir des connaissances suffisantes, vous devez dans un premier temps consultez les pages de manuel correspondant au shell que vous utilisez, puis des docs plus techniques comme les HOWTOs et ouvragres plus importants.


Menu: Shell et commandes haut de Page les fichiers de configuration
Copyleft  Michel Luc cern91@tuxfamily.org Document sous licence FDL