Page suivante - Page précédente - Table des matières

6. Shells

Les processus utilisateurs sont souvent des processus fils du shell indiqué pour cet utilisateur dans le fichier /etc/passwd. Les fichiers d'initialisation de ces shells modifient souvent la variable PATH.

Lors de la connexion, le nom du shell est précédé d'un '-'. Par exemple, dans le cas de bash, on aura -bash. Cela indique au shell qu'il est en présence d'un login shell et qu'il doit dans ce cas exécuter les fichiers d'initialisation spécifiques à la connexion. Dans le cas contraire, on aura une initialisation plus légère. De plus, le shell détermine s'il est interactif ou non, c'est à dire si les commandes viennent d'un terminal (tty) ou d'un fichier. Cela modifie également l'importance de l'initialisation si bien qu'un shell non interactif et qui n'est pas lancé avec une connexion effectue vraiment très peu d'initialisation (bash n'exécute aucune initialisation dans ce cas là).

6.1 bash

Pour un login shell normal, bash parcourt le fichier /etc/profile, commun à tous, où les variables d'environnement, dont PATH, peuvent être fixées pour les utilisateurs de bash. Cependant, ce fichier n'est pas relu lorsque le système se trouve face à un shell non interactif. Le cas le plus important est rsh, où la commande est exécutée sur la machine voisine : le fichier /etc/profile n'est pas lancé et le PATH provient du démon de rsh.

bash accepte les arguments -login et -i qui sont utilisés pour obtenir respectivement un login shell et/ou un shell interactif.

L'utilisateur peut redéfinir les paramètres contenus dans /etc/profile en créant un fichier ~/.bash_profile, ~/.bash_login ou ~/.profile. Il faut noter que seul le premier fichier sera exécuté même si cela diffère des habitudes de csh. En particulier, ~/.bash_login ne sera pas forcement exécuté pour un login shell, car si ~/.bash_profile existe, ce dernier sera prioritaire.

Si bash est lancé par sh (qui est un lien symbolique sur bash), il se comporte comme le Bourne shell original : il ne parcourt que les fichiers /etc/profile et ~/.profile et uniquement dans le cas d'un login shell.

6.2 tcsh

Pour un login shell, tcsh exécute dans l'ordre les fichiers suivants :

  • /etc/csh.cshrc
  • /etc/csh.login
  • ~/.tcshrc
  • ~/.cshrc (si ~/.tcshrc n'existe pas)
  • ~/.history
  • ~/.login
  • ~/.cshdirs

Attention. tcsh peut être compilé pour exécuter les scripts de connexion (login) avant les scripts cshrc.

Les shells non interactifs n'exécutent que les scripts *cshrc. Les scripts *login peuvent être utilisés pour ne fixer le PATH que lors d'une connexion.


Page suivante - Page précédente - Table des matières