Paramétrage de l'environnement de travail
Présentation
Les thèmes abordés dans ce chapitre permettront à l’utilisateur de paramétrer son environnement de travail en tenant compte du shell utilisé.
Variables d’environnement
Un certain nombre de variables sont définies dans l’environnement du shell. Elles contiennent des informations nécessaires au fonctionnement de l’interpréteur et/ou des commandes lancées à partir de celui-ci.
1. Liste des variables
La commande set donne la liste des variables définies dans le shell courant.
Exemple
$ set
HOME=/home/christie
LOGNAME=christie
PATH=/usr/bin:/bin
PS1='$ '
PS2='> '
TERM=vt100
...
2. Affichage de la valeur d’une variable
Le caractère spécial $ du shell permet d’accéder au contenu d’une variable.
Exemple
$ echo $HOME
/home/christie
$
3. Modification de la valeur d’une variable
Le shell permet d’initialiser ou de modifier des variables.
Exemple
$ variable=valeur
$ echo $variable
valeur
$
Si la valeur contient des caractères spéciaux du shell ($, >, espace...), il faut empêcher le shell d’interpréter ceux-ci en entourant la valeur avec des apostrophes.
Utiliser des apostrophes est l’une des trois manières de masquer des caractères en shell. Se référer au chapitre Les bases de la programmation shell - Caractères de protection.
Exemple
Le symbole > (redirection) doit être masqué, l’espace (séparateur de mots sur la ligne de commande) également :
$ variable='mot1 mot2 =>'
$ echo $variable
mot1 mot2 =>
$
Il ne faut pas mettre d’espace autour du signe =. Le shell ne comprendrait pas qu’il s’agit d’une affectation.
4. Principales variables
Les variables présentées ci-dessous possèdent une valeur au niveau du shell de connexion. D’autres variables peuvent être définies ultérieurement.
La modification...
Les options du shell
posix |
ksh |
bash |
Le shell propose des options permettant de paramétrer un certain nombre de fonctionnalités.
1. Activer et désactiver une option du shell
Les options -o et +o de la commande interne set permettent respectivement d’activer et de désactiver une option du shell.
Syntaxe
set -o option
set +o option
2. Visualiser la liste des options
La commande set avec l’option -o affiche la liste des options du shell en indiquant si elles sont actuellement activées ou non.
$ set -o
Current option settings
allexport off
bgnice on
emacs on
errexit off
gmacs off
ignoreeof off
interactive on
keyword off
markdirs off
monitor on
noexec off
noclobber off
noglob off
nolog off
nounset off
privileged off
restricted off
trackall off
verbose off
vi off
viraw off
xtrace off
notify off
$
3. Principales options
a. ignoreeof
Pour quitter un shell, il existe deux méthodes :
-
la commande exit ;
-
la séquence de touches ˆd.
Si l’option ignoreeof est activée, il devient impossible de quitter le shell en appuyant sur ˆd.
L’option est désactivée par défaut.
Exemple
$ set -o ignoreeof
$ ˆd (Saisie ˆd)
Use 'exit' to terminate this shell
b. noclobber
Lorsqu’une redirection est faite vers un fichier déjà existant, celui-ci est écrasé sans sommation (sous réserve des permissions). Pour être averti de l’existence du fichier, il faut activer l’option noclobber.
Exemple
L’option noclobber est désactivée :
$ set -o | grep noclobber
noclobber off
$ echo Bonjour > resu
$ cat resu
Bonjour
$
Le fichier resu va être écrasé :
$ echo Au revoir >...
Les alias
posix |
ksh |
bash |
Le shell propose une commande interne alias qui permet de créer des raccourcis sur des commandes. Un certain nombre d’alias existent par défaut.
1. Définir un alias
Exemple
Création de trois alias : l, c, et rm qui seront respectivement les équivalents de ls -l, clear et rm -i :
$ alias l='ls -l'
$ l
total 30
-rw-r--r-- 1 christie cours 11428 Jan 28 06:19 out
-rw-r--r-- 1 christie cours 22 Jan 31 17:08 out2
-rwxr--r-- 1 christie cours 18 Nov 15 20:08 premier
-rw-r--r-- 1 christie cours 51 Jan 28 06:22 resu
$ alias c='clear'
$ alias rm='rm -i'
$ rm out
rm: remove out (y/n)? n
$
2. Visualiser la liste des alias
a. Visualiser tous les alias
$ alias
autoload='typeset -fu'
c=clear
functions='typeset -f'
history='fc -l'
integer='typeset -i'
l='ls -l'
local=typeset
r='fc -e -'
rm='rm -i'
...
b. Visualiser un alias en particulier
$ alias l
l='ls -l'
$
3. Supprimer un alias
$ unalias l
$ l
ksh: l: not found
$
Historique de commandes
posix option vi |
ksh |
bash |
Le shell stocke les commandes lancées dans un fichier texte localisé dans le répertoire d’accueil de l’utilisateur. Le nom de ce fichier diffère en fonction du shell utilisé.
Shell |
Fichier historique |
ksh |
.sh_history |
bash |
.bash_history |
Pour rappeler les commandes stockées dans ce fichier, le shell propose deux options : emacs et vi.
Ces deux options sont mutuellement exclusives : l’activation de l’une désactive l’autre. En ksh, elles sont toutes deux désactivées par défaut. En bash, l’option emacs est activée par défaut.
Paramétrage par défaut en ksh :
$ set -o
Current option settings
...
emacs off
...
vi off
...
$
Paramétrage par défaut en bash :
$ set -o
Current option settings
...
emacs on
...
vi off
...
$
1. Paramétrer le rappel de commandes en ksh
Le Korn shell propose deux options pour rappeler les commandes : l’option emacs ou l’option vi. Pour rappeler les commandes en utilisant les flèches, il faudra effectuer un paramétrage (voir ci-dessous), sauf en ksh93 à partir de la version " h " (ksh93h) où les flèches fonctionnent par défaut dans les deux modes.
Pour connaître la version de son ksh93:
$ /bin/ksh --version
version sh (AT&T Research) 93u+ 2012-08-01
a. Option vi
Le shell propose d’utiliser des commandes identiques à celles de l’éditeur vi pour rappeler et éventuellement modifier les commandes stockées dans le fichier ~/.sh_history. Il faut pour cela activer l’option :
$ set -o vi
Le caractère ~ représente en bash et en ksh le répertoire...
Les fichiers d’environnement
1. Caractéristiques des fichiers d’environnement
Les fichiers d’environnement servent à stocker de manière permanente les définitions liées au paramétrage de l’environnement utilisateur.
Ils contiennent des commandes Unix et sont toujours interprétés par un shell. Ce sont des scripts shell d’environnement.
Certains scripts d’environnement sont exécutés uniquement par le shell de connexion. Il est donc important de savoir faire la distinction entre un shell de connexion et un shell ordinaire.
a. Shell de connexion
Environnement texte
En environnement texte, le shell de connexion est lancé immédiatement après l’identification de l’utilisateur par son nom de login et son mot de passe. Ce processus est l’ancêtre commun de toutes les commandes qui seront lancées pendant la session. Tout shell lancé ultérieurement n’aura pas le statut de shell de connexion.
Environnement graphique
En environnement graphique, le shell de connexion est lancé entre la bannière de connexion et l’affichage de l’interface graphique. Ce n’est donc pas un shell interactif. L’interface graphique et toute application lancée ultérieurement à partir des icônes sont des processus descendant du shell de connexion. Dans la majorité des cas, un terminal ouvert à partir de l’environnement graphique n’est pas un shell de connexion.
Cependant, certaines plates-formes permettent de lancer à partir de l’interface graphique soit un shell de connexion, soit un shell ordinaire. Les fichiers d’environnement mis en jeu ne seront pas les mêmes dans chaque cas.
b. Fichiers d’environnement lus par le shell de connexion
Le shell de connexion lit un script shell système qui se nomme...
Exercices
Les fichiers fournis pour les exercices sont disponibles dans le répertoire dédié au chapitre sous l’arborescence Exercices/fichiers.
1. Variables d’environnement
a. Exercice 1
1. |
Faire afficher la liste de toutes les variables d’environnement. |
2. |
Faire afficher la liste des variables d’environnement exportées. |
3. |
Faire afficher la valeur des variables d’environnement PATH et HOME. |
b. Exercice 2
Créer un répertoire bin sous le répertoire d’accueil. Sous bin, créer ou récupérer le petit programme suivant (script shell qui affiche une phrase à l’écran) :
$ pwd
/home/christie/bin
$ vi macommande
echo "Execution de macommande"
$ chmod u+x macommande
1. |
Revenir dans le répertoire d’accueil. |
2. |
Modifier la variable PATH de telle sorte que cette commande fonctionne : |
$ macommande
Execution de macommande
3. |
Rendre ce paramétrage permanent. |
2. Alias de commandes
a. Exercice 1
1. |
Faire afficher les alias du shell courant (ksh, bash). |
2. |
Créer un alias p qui va correspondre à la commande ps -ef | more. |
3. |
Tester l’alias. |
4. |
Détruire l’alias. |
5. |
Rendre cet alias permanent. |
b. Exercice 2
En définissant un alias, l’utilisateur a malencontreusement appuyé sur la touche [Entrée] sans avoir eu le temps de fermer l’apostrophe. À quoi correspond le caractère > et comment se sortir de cette situation ?
$ alias 'l=ls -l
Entrée
>