
Je suis en train de décortiquer le script suivant :
mkimage.sh — Create a docker image based on debootstrap(-ed) debian jessie, suitable to run odoo
Odoo et Jessie ne sont pas mon sujet d'étude,
pour moi il s'agit de comprendre :
Pourquoi une simple install via debootstrap
n'est pas suffisant pour créer un conteneur Docker fonctionnel.
Donc pour ne pas passer à côté et ne rien laisser dans l'ombre,
je m'efforce de comprendre tous les détails.
----------------------------------------------------------------
Pour ce qui est de :
set -x; <cmde>
Par ex j'ai testé sur mon poste de travail (testing) :
Code : Tout sélectionner
$ set -x; mkdir -p ./test/test1
+ mkdir -p ./test/test1
et dans une VBox (NakeDeb64 - stable)
Code : Tout sélectionner
# set -x; mkdir -p ./test/test1
+ mkdir -p -p ./test/test1
pour ce que j'ai pu en lire :
Code : Tout sélectionner
$ man bash
...
-x Après le développement de chaque commande simple, commande for,
commande case, commande select ou commande for arithmétique,
afficher la valeur développée de PS4, suivie de la commande et
ses arguments développés ou la liste de mots associés.
...
Code : Tout sélectionner
$ apropos PS4
PS4 : rien d'adéquat
sh -x scriptname echoes the result each command, but in an abbreviated manner.
This is the equivalent of inserting set -x or set -o xtrace in the script.
Dois-je en conclure que :
- set -x; ... n'a aucun effet sur le résultat des commandes qui suivent
- Cela n'a d'utilité que pour le débogage
- PS4 est une variable qui enregistre la dernière liste de commandes associée à set -x
- cela non plus n'a pas d'incidence sur le résultat des commandes, ni sur le déroulement du script.
Je me rends compte - maintenant - que la commande set -x est persistante dans le shell où elle est passée,
d'où l'emploi des parenthèses comme dans :
Code : Tout sélectionner
$ (set -x; pwd)
+ pwd
/home/data/docs/tests/bash/redirection
[/édité]
Merci.
PS : j'aurai probablement besoins d'aide sur d'autres points de ce script, je posterai sur de nouveaux sujets