Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
de connexion
Lors de la connexion, le Korn shell exécute les commandes mentionnées dans des fichiers de paramétrage destinés à
initialiser des variables d’environnement et à activer diverses fonctionnalités.
Le Korn shell exécute, en premier lieu, un fichier /etc/profile, géré par l’administrateur et commun à tous les
utilisateurs. Ce fichier permet, entre autres, l’affichage d’informations générales, la recherche de courrier, le
positionnement de certaines variables d’environnement.
Dans un deuxième temps, le shell exécute le contenu d’un éventuel fichier personnel .profile, situé dans le répertoire
de connexion.
Parmi les tâches usuelles effectuées dans ce fichier, nous pouvons citer :
l le paramétrage du prompt (variables PS1 et PS2),
l le positionnement de certaines variables d’environnement,
l le positionnement de certaines options du shell,
l un appel éventuel à la commande umask (choix des droits par défaut).
Historiquement, par rapport à un souhait de compatibilité ascendante avec le Bourne shell, il est recommandé de
prévoir un deuxième fichier pour l’activation de certaines fonctionnalités propres au Korn shell (alias, éditeur
intégré...). Le nom de ce second fichier (traditionnellement .kshrc) doit être indiqué dans une variable
d’environnement ENV.
Ce deuxième fichier est exécuté après le fichier .profile lors de la connexion. Par contre, si le shell est démarré de
façon interactive, le fichier .profile ne sera pas exécuté, au profit de ce seul deuxième fichier.
Il ne faut pas confondre la commande env avec la variable ENV qui contient donc le nom d’un fichier exécuté seul lors
du lancement interactif du shell ou exécuté après le fichier .profile lors d’une véritable connexion.
Exemple de fichier .profile
Exemple de fichier .kshrc
# mes alias
alias h=history
alias l=’/usr/bin/ls -l’
Certaines lignes de ces exemples de fichiers nécessitent quelques commentaires :
PS1=’$PWD$
La variable PWD contient à chaque instant le nom du répertoire courant et nous souhaitons avoir cette
information directement dans le prompt. Les simples quotes sont nécessaires pour que la variable PWD
ne soit pas résolue immédiatement, mais bien à chaque appel de la commande cd. Si nous utilisions des
doubles quotes, la valeur de notre prompt serait la bonne au début mais ne serait plus actualisée par la
suite. De plus, nous souhaitons que le prompt se termine par le caractère $ (dollar). Celuici est
judicieusement banalisé à l’intérieur des simples quotes.
PATH=$PATH:$HOME/bin
Pour un utilisateur "développeur", il est judicieux de compléter son PATH par un répertoire personnel qui
contiendrait des commandes.
alias rm=’/usr/bin/rm i’
Ce genre d’alias est recommandé pour sécuriser certaines commandes en forçant leur exécution avec
l’option de demande de confirmation.
En bash, le scénario un peu plus compliqué des fichiers de connexion est décrit dans la page de man à la rubrique
Invocation.
$ man bash
.............................
.............................
INVOCATION
A login shell is one whose first character of argument zero is a -, or
one started with the --login option.
1. Prise en compte des modifications
Pour activer des modifications dans ces fichiers personnels, nous pourrions, bien entendu, effectuer une
déconnexion puis une reconnexion immédiate. Pour éviter cela, nous pouvons utiliser la commande interne . (point)
qui force l’interprétation du fichier dans le processus courant, sans création de fils.
Ceci est indispensable pour permettre la prise en compte d’éventuelles modifications de variables d’environnement.
En effet, rappelons que s’il y a bien un mécanisme d ’héritage du parent vers le fils, il n’y a jamais de remontée du fils
vers le parent.
Il est à noter qu’il n’est pas nécessaire de doter les fichiers de connexion de la permission d’exécution car ils sont
simplement lus dans ce mode particulier d’utilisation via la commande . (point). Il s’agit d’ailleurs d’une bonne
pratique car cela évite de les lancer par erreur comme une commande classique.
Exemple Korn shell
$ . .profile
ksh: .profile: not found
$ . ./.profile
$
Assez souvent, l’utilisateur ne possède pas le répertoire courant dans son PATH. Dans ce cas, la première syntaxe
échoue car la commande . (point) recherche le fichier comme une commande et elle n’a pas pu localiser le
fichier .profile. La seconde syntaxe s’impose alors puisque nous y indiquons explicitement que le fichier se trouve
dans le répertoire courant.
Pour résumer, le premier point désigne la commande interne, le second désigne le répertoire courant et le troisième
n’est que le premier caractère du nom du fichier !
En bash, la commande . (point) ne recherche pas le fichier comme une commande et trouve tout naturellement celui
ci dans le répertoire courant.
$ . .bashrc
$