SHELL lancement d'un shell

Bonjour,

encore une éngme pour moi :

J'ai un script de configuration de variables d'environnement pour un utilisateur.
Ce script est exécutable.

Pour le lancer, si je fais :
/home/monuser/monscript
aucune variable ne s'initialise.
Idem si je fais
sh /home/monuser/monscript

On m'a dit qu'il faut faire :
. /home/monuser/monscript

Et en effet, çà marche.

Mais pourquoi ??

Merci
Configuration: Windows XP
Firefox 2.0.0.3

1 réponse

  1. Modérateur
    Salut,

    Tu peux aussi écrire :
    source /home/tonuser/sonscript
    Le "." ou "source" demande à ce que le script soit exécuté dans l'environnement en cours.

    Voir à ce sujet le man bash :
    man bash -P 'less -p "       source"'
    ;-))
    1. Mais je ne comprends pas:

      Tous les scripts ne sont-ils pas exécutés dans l'environnement en cours quand ils sont lancés par un user ?
      Enfin je veux dire l'environnement en cours du user ?
    2. Modérateur
      Tous les scripts ne sont-ils pas exécutés dans l'environnement en cours
      Pas "dans", mais "par" l'environnement en cours ce qui a pour effet de créer un processus fils (fork).

      Le fait de "sourcer" un script, demande son exécution dans l'environnement en cours, le shell lit le script ligne à ligne et l'interprète directement.
    3. Contributeur
      tlep, pour comprendre l'interet que le shell se fork, c-a-d crée un processus-fils , essaye d'exécuter la commande :
      . ls
    4. @dubcekca me donne:

      . ls
      -bash:ELF: command not found

      :-|
    5. Contributeur
      @dubcekil y a un espace entrre le . et ls

      .<espace> ls