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 :
-
il recherche si la commande correspond à un alias et réalise
l'éventuelle substitution ;
- 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
- 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 variable
argv
est pour un script C shell l'ensemble
des arguments de la commande appelée.
- La variable
cwd
est le nom de la directorie courante.
- La variable
home
désigne notre home directorie.
- La variable
status
est le résultat fournit par la
dernière commande.
- La variable
term
indique le type du terminal sur lequel
nous travaillons.
- La variable
user
est notre nom d'utilisateur
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
-
Lors du login, c'est-à-dire lors du démarrage d'une session,
les commandes des deux fichiers
~/.cshrc
puis
~/.login
sont exécutées.
- Lors du démarrage d'un nouveau C shell, par exemple lors de
l'ouverture d'une fenêtre shell, les commandes du fichier
~/.cshrc
sont exécutées.
- Lors de la terminaison d'une session, les commandes du fichier
~/.logout
sont exécutées.