Précédent Index

2  Mise en place d'un environnement de travail

Notre environnement de travail sous le C shell peut être personnalisé en positionnant un certain nombre de paramètres. Nous allons présenter les principaux dans cette section.

2.1  Choisir csh

Différents shells sont disponibles sous Unix. Lors de la création de notre compte, l'administrateur système a choisi le shell par défaut qui sera exécuté lors de chacune de nos sessions. Il est possible de modifier ce choix initial par la commande chsh (ou ypchsh si l'on travaille sur un réseau de machines administrées par des yellow pages)
      % chsh
      Changing login shell for marquet on homel.
      Old shell: /bin/sh
      New shell:
ce à quoi nous répondons :
      New shell: csh 
bien évidement !

2.2  Recherche des commandes

Nous présentons ici comment le C shell retrouve les commandes qu'il doit interpréter :
  1. il recherche si la commande correspond à un alias et réalise l'éventuelle substitution ;
  2. il recherche si la commande est une commande built-in, c'est-à-dire une commande directement interprétée par le shell (par exemple alias, cd, set...) ; si c'est le cas il l'exécute, sinon
  3. il recherche la commande dans les chemins de recherches. Les chemins de recherches sont une liste de directories contenues dans la variable path. Le C shell recherche dans chacune de ces directories s'il existe un fichier portant le nom de la commande.
Il est habituel de mettre ses propres commandes dans une directories ; mettons ~/bin. Nous modifions la variable path en conséquence :
      % set path = (~/bin $path) 
Cependant, le C shell ne recherche pas les commandes dans chacun des répertoires de la liste $path à chaque invocation de commande ; il construit une table de hashage interne lui permettant une recherche plus rapide des commandes. Considérons que nous ayons mis au point une commande where et que nous désirions l'ajouter à nos ``outils'' :
      % cp where ~/bin
tentons d'exécuter cette commande
      % where mail 
      where: Command not found.
Le shell ne retrouve pas la commande. Il est nécessaire de reconstruire sa table de hashage à l'aide de la commande
      % rehash 
      % where mail 
      ... 

2.3  Variables

De nombreuses informations définissant l'environnement d'un utilisateur sont déterminées par la valeurs de variables dites variables d'environnement. D'autres variables, dites variables prédéfinies, déterminent aussi notre environnement de travail. Enfin, des variables peuvent être définies et utilisées par l'utilisateur pour ses propres applications.

Variables environnement
Une variable environnement est affectée par la commande setenv, sa valeur est référencée par le préfixe ``$''. Par exemple
      setenv MAIL /usr/spool/mail/$USER
positionne la variable MAIL (qui contient le nom du fichier de mail) et utilise la variable USER (qui contient notre nom d'utilisateur).

L'ensemble des variables d'environnement est affiché par les commandes printenv et/ou env
      % printenv
      HOME=/home/enseign/marquet
      SHELL=/bin/csh
      TERM=xterm
      USER=marquet
      PATH=/home/enseign/marquet/bin:.:/usr/ucb:/bin:/usr/bin:/etc:/usr/etc
      LOGNAME=marquet
      PWD=/home/enseign/marquet/tmp
      OPENWINHOME=/usr/openwin
      PRINTER=lp
Notons l'existence de la variable PATH qui code la même information que la variable path sous une autre forme. Le C shell assure la cohérence entre ces deux variables.

La variable TERM indique le type du terminal sur lequel nous travaillons ; sa valeur peut être utilisée pour personnaliser l'environnement de travail en fonction du terminal.

La variable OPENWINHOME définit la racine dans le système de fichiers à partir de laquelle openwindow (le système de gestion de fenêtres) va retrouver ses exécutables et fichiers de configuration. De la même manière, de nombreux logiciels utilisent une telle variable d'environnement.

Variables
Les variables prédéfinies et les variables utilisateurs sont affectées par la commande set ; leur valeur est référencée par le caractère ``$''. Par exemple
      % set path = (~/bin $path)
affecte la variable path comme concaténation de ~/bin et de son ancienne valeur.

Sans paramètre, la commande set affiche la valeur de l'ensemble des variables définies.
      % set
      argv    ()
      cwd     /home/enseign/marquet/tmp
      filec   
      history 13
      ignoreeof
      noclobber
      home    /home/enseign/marquet
      path    (/home/enseign/marquet/bin . /usr/ucb /bin /usr/bin /etc /usr/etc)
      prompt  % 
      shell   /bin/csh
      status  0
      term    xterm
      user    marquet
Les variables suivantes sont principalement utilisées pour connaître l'état de l'environnement : La valeur des variables suivantes permet de modifier l'environnement :

2.4  Fichiers de configuration

Afin de faciliter la mise au point d'un environnement de travail. Trois fichiers sont utilisés par le C shell, il s'agit des fichiers ~/.login, ~/.cshrc, et ~/.logout.

Préalablement à toute modification de ces fichiers, gardons-en une copie :
      % cp ~/.login ~/.login.orig
      % cp ~/.cshrc ~/.cshrc.orig
      % cp ~/.logout ~/.logout.orig
Il est également important de se prévenir d'erreurs stupides lors de la mise au point des ces fichiers. Il est nécessaire de rester loggé sur un autre terminal pour ``essayer'' les modifications faites dans ces fichiers. Sinon, à supposer qu'une erreur se soit glissée dans ces modifications, il pourrait être impossible d'accéder à notre compte sans l'intervention de l'administrateur système !

Ces fichiers contiennent des commandes C shell qui seront exécutées
Précédent Index