SHELL lancement d'un shell

tlep Messages postés 597 Statut Membre -  
tlep Messages postés 597 Statut Membre -
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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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"'
    ;-))
    0
    1. tlep Messages postés 597 Statut Membre 118
       
      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 ?
      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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.
      0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      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
      0
    4. tlep Messages postés 597 Statut Membre 118 > dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention  
       
      ca me donne:

      . ls
      -bash:ELF: command not found

      :-|
      0
    5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660 > dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention  
       
      il y a un espace entrre le . et ls

      .<espace> ls
      0