IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

[Bash] différence entre "./script.sh" et ". ./script.sh"


Sujet :

Administration système

  1. #1
    Membre régulier Avatar de wodel
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2005
    Messages
    295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2005
    Messages : 295
    Points : 104
    Points
    104
    Par défaut [Bash] différence entre "./script.sh" et ". ./script.sh"
    Bonjour,

    j'aimerai savoir quelle est la différence entre lancer un script bash avec ce modèle:

    #./script.sh

    et le modèle

    #. ./script.sh

    je parle bien sur du point et l'espace en plus

    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il y a peut-être d'autres impacts mais je connais au moins celui-ci:

    Supposons le script suivant:

    Avec la commande ./script.sh, il rien ne va se passer dans ton environnement. le script va travailler dans un environnement dédié (copie de l'environnement courant) et n'altérera ni ne créer la variable $oO

    En revanche, avec la commande . ./script.sh, la valeur de la variable $oO dans le shell qui exécute la commande va être altérée.

    La conséquence, c'est ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    tarnaud:/Users/tarnaud/test>./script 
    tarnaud:/Users/tarnaud/test>echo $oO
     
    tarnaud:/Users/tarnaud/test>. ./script 
    tarnaud:/Users/tarnaud/test>echo $oO
    Oo

  3. #3
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    En shell le point (".") est built-in synonyme du buit-in "source". Donc ". ./script" est strictement équivalent à "source ./script".

    Quand tu fais "./script", ton shell courant fork un nouveau process qui va exécuter la commande indiquée par la ligne #! de ton script, et c'est ce sous-process qui va interpréter ton script.

    Quand tu fais ". ./script" ou "source ./script", ton shell courant va interpréter ton script lui-même.

  4. #4
    Membre habitué Avatar de nowahn
    Homme Profil pro
    Inscrit en
    Août 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 84
    Points : 150
    Points
    150
    Par défaut
    Bonjour,

    Pour expliquer le pourquoi du comment, il faut savoir que bash interprète le premier mot comme le nom de la commande à exécuter (ce n’est pas toujours vrai, mais on va rester simple). bash sépare les mots par les espaces blancs.
    Ici, il n’y a qu’un seul mot (le premier, forcément). C’est donc cette commande qui est exécutée, dans un sous-shell (d’où le fait que l’environnement d’origine ne soit pas altéré par la commande).
    Ici, la commande est « . », avec l’argument « ./script.sh ». « . » est une commande intégrée de bash (il n’y a pas de fichier « /bin/. » à exécuter). Elle exécute les commandes du script dans le shell courant (d’où l’altération de l’environnement d’origine, comme expliqué par Nudger).


    EDIT : arf, grillé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Différence entre %STR et %QUOTE
    Par fafabzh6 dans le forum Macro
    Réponses: 10
    Dernier message: 14/03/2011, 17h43
  2. [Win'Design] Script SQL des différences entre 2 versions
    Par laurentapologic dans le forum Autres
    Réponses: 1
    Dernier message: 24/04/2008, 11h28
  3. La différence entre un script et un programme ?
    Par romeio dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 16/09/2007, 14h58
  4. Réponses: 5
    Dernier message: 23/08/2007, 09h53
  5. Différences entre langages scriptés et compilés
    Par @v@lon dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/03/2007, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo