Blog ENI : Toute la veille numérique !
En raison d'une opération de maintenance, le site Editions ENI sera inaccessible le mardi 10 décembre, en début de journée. Nous vous invitons à anticiper vos achats. Nous nous excusons pour la gêne occasionnée
En raison d'une opération de maintenance, le site Editions ENI sera inaccessible le mardi 10 décembre, en début de journée. Nous vous invitons à anticiper vos achats. Nous nous excusons pour la gêne occasionnée
  1. Livres et vidéos
  2. Programmation shell sous Unix/Linux
  3. Paramétrage de l'environnement de travail
Extrait - Programmation shell sous Unix/Linux ksh, bash, norme POSIX (avec exercices corrigés) (7e édition)
Extraits du livre
Programmation shell sous Unix/Linux ksh, bash, norme POSIX (avec exercices corrigés) (7e édition)
2 avis
Revenir à la page d'achat du livre

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  
>