Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/10/2015, à 12:07

McRbt

[RÉSOLU] Différence lancer un script avec le binaire et en l'exécutant

Bonjour à vous tous,

Je travaille sur un projet qui consiste à écrire un script en BASH pour gérer des disques virtuelles.
Mon collègue m'a posé une question, à laquelle nous n'avons pas trouvé de réponse autour de nous ni sur internet ni après quelques tests.

Quelle est la différence entre lancer les script avec le binaire (/bin/bash script.sh) et en l'exécutant (./script.sh) ?

La seule différence que j'ai pu remarquer, est qu'en lançant un script comme ceci : /bin/bash script.sh, il prend plus de temps à l'exécution qu'en le lançant directement avec ./script.sh. Mais ça se joue à quelques ms près.

Merci d'avance pour vos réponses.

Dernière modification par McRbt (Le 22/10/2015, à 17:06)

Hors ligne

#2 Le 22/10/2015, à 12:23

pingouinux

Re : [RÉSOLU] Différence lancer un script avec le binaire et en l'exécutant

Bonjour,

/bin/bash script.sh

Le script est exécuté avec bash, et seule la permission de lecture est nécessaire

./script.sh

Le script est exécuté avec l'interpréteur indiqué sur la première ligne (#!/bin/sh par exemple), et doit avoir les permissions de lecture et d'exécution

Hors ligne

#3 Le 22/10/2015, à 13:42

McRbt

Re : [RÉSOLU] Différence lancer un script avec le binaire et en l'exécutant

pingouinux,

Si j'ai bien compris :

/bin/bash script.sh

Le script est lancé avec l'interpréteur bash, et même si la permission d'exécution est nulle, le script se lance ?

./script.sh

Ici, le script est lancé par l'interpréteur renseigné sur la première ligne (dans mon cas, c'est bien #!/bin/sh) et doit, obligatoirement, posséder les droits de lecture et d'exécution pour être lancé ?

Là est la seule différence entre les deux ?
Si l'interpréteur est indiqué en première ligne (ici encore #!/bin/bash) il n'y a aucun avantage à le lancer comme ceci /bin/bash script.sh dans ce cas ?

Hors ligne

#4 Le 22/10/2015, à 15:12

pingouinux

Re : [RÉSOLU] Différence lancer un script avec le binaire et en l'exécutant

Si l'interpréteur est indiqué en première ligne (ici encore #!/bin/bash) il n'y a aucun avantage à le lancer comme ceci /bin/bash script.sh dans ce cas ?

C'est exact.
On peut ajouter aussi ceci :
- avec la méthode 1, le fichier script.sh est cherché dans le répertoire courant si le chemin n'est pas donné
- avec la méthode 2, le fichier script.sh est cherché dans les répertoires définis dans la variable PATH si le chemin n'est pas donné

Une autre façon de lancer le script, dans le shell courant, est celle-ci

source script.sh
# ou bien
. script.sh

Il n'y aura alors pas de sous-shell créé, et les variables définies dans le script le seront encore à la sortie. De même, un changement de répertoire effectué dans le script sera encore actif à sa sortie.

Le mieux est de faire quelques essais pour bien comprendre.

Hors ligne

#5 Le 22/10/2015, à 17:05

McRbt

Re : [RÉSOLU] Différence lancer un script avec le binaire et en l'exécutant

pingouinux,

J'ai pris connaissance de ton autre méthode, qui peut être utile selon son utilisation.
Merci pour tes réponses qui m'ont éclairé, je pensais qu'il y avait une grosse différence entre les manières de lancer ces scripts.

Je passe en résolu.

Cordialement,
McRbt

Hors ligne