web-dev-qa-db-fra.com

Shell appelant Shell (s) et passant des variables env ou non

Je veux lancer/exécuter /usr/bin/FreeFileSync (FFS) de mon crontab au plus une fois par jour, chaque fois que le volume cible de sauvegarde externe est monté.

Pour cela, j'ai utilisé @ Germar's answer : c'est-à-dire un script de mise en file d'attente qui effectue quelques tâches ménagères avant d'appeler un petit script de sauvegarde comme deuxième argument du nom de base du script de mise en file d'attente. Le script de sauvegarde appelé (le processus enfant) effectue à son tour une vérification et appelle FFS (le processus grand enfant).

Parce que FFS ouvre son interface graphique principale au lancement, je pense que je dois déclarer stdout par exemple comme:

DISPLAY=:0.1; export DISPLAY   # I have two screens

Ma question est de savoir si je dois déclarer ma variable d'environnement DISPLAY dans le script enfant ou dans le script de mise en file d'attente parent qui l'appelle?

Est-ce que @ muru's réponse s'applique dans le cas? C'est à dire. si j'inclus l'instruction DISPLAY dans le script enfant, dois-je la source dans le script parent, sachant que j'ai affaire à une variable d'environnement ?

2
Cbhihe

Vous avez deux options:

  1. Vous pouvez utiliser :

    export DISPLAY=:0.1
    

dans le script parent. Comme nous utilisons export, la variable sera héritée par tous les processus enfants.

  1. Vous pouvez utiliser :

    DISPLAY=:0.1
    

dans le shell enfant (s'il appelle d'autres sous-shell, utilisez export devant). Dans ce cas, comme le script enfant appelle FFS, il suffit de mettre le DISPLAY dans le script enfant suffit.

1
heemayl