Compatibilité de shells
Objectif
Le besoin est de configurer un compte Linux sous /bin/sh et de pouvoir l’exploiter à la demande sous /bin/bash.
La démarche de configuration de l’environnement de travail, se veut incrémentale. Il foit être possible de compléter ou modifier l’environnement par parties.
La démarche requiert une forte lisibilité/traçabilité par les usagers au regard des modifications environnementales réalisées.
Obstables rencontrés
Les incompatibilités entre /bin/sh et /bin/bash sont nombreuses, et je n’en dresserai pas ici une liste exhaustive, mais une liste des principales rencontrées.
objet | /bin/sh | /bin/bash |
---|---|---|
déclaration de variables | la syntaxe requiert une ligne de définition et une ligne d'export de variable | la syntaxe autorise de réaliser la définition et l'export en une seule ligne |
écriture écran en couleur | la fonction built-in echo ne rend pas les codes couleurs. | la fonction built-in echo restitue les code couleurs |
exécution de programme | Invocation uniquement entre back-quotes | Invocation entre back-quotes ou $() |
Les codes couleurs sont identiques. Pour les afficher sous les 2 shells, utiliser la fonction printf.
Pour l’exécution de programme, utiliser strictement l’approche /bin/sh.
Solution
Le shell de login de ce compte Linux est défini comme étant /bin/sh. Il utilise donc le fichier .profile pour positionner les éléments de l’environnement de travail. Ce fichier doit donc être compatible avec la syntaxe de /bin/sh.
L’usage de ce compte sous /bin/bash se réalise en entrant la commande shell bash -l, qui exploite également ce même fichier .profile. Qui plus est, le fichier .profile est paramétré pour charger le fichier .alias dans le cas où le shell exécuté est /bin/bash.
La démarche exige de spécifier pour chaque logiciel, outil, contexte, un fichier shell de positionnement de son environnement. Tous ces fichiers shells sont consignés dans le répertoire .config-sh sous le répertoire home du compte Linux considéré.
Code du fichier .profile
Code du fichier color.profile.sh
Code du fichier socle-profile.sh
Code du fichier perl.sh
Sortie écran
La lisibilité et traçabilité s’apprécie par l’image suivante.
Vérification de bon fonctionnement
Les vérifications ont été réalisées avec succès sur Red Hat 8.4 et sur Solaris 10.