L’objectif principal de cet article est de comprendre clairement ce qui se passe lorsque vous exécutez le script vs source le script dans bash. Tout d’abord, nous comprendrons clairement comment le programme est soumis lorsque vous appelez le script de différentes manières.

REMARQUE: la création du script avec une extension n’a pas d’importance. Le script fonctionnera bien même sans extensions.

Fondamentalement, chaque script commence par une ligne appelée case(#!). Le Hacher le symbole en bash sera interprété comme un commentaire mais case a une signification particulière. Il dit à bash de soumettre le programme dans n’importe quel interprète que vous avez mentionné dans case.

Vous trouverez ci-dessous un exemple de programme et je spécifie bash comme interprète.

$ cat >> Hello_World.sh
#!/usr/bin/env bash
echo "Hello world"

$ chmod +x Hello_world.sh

Maintenant, pour exécuter le script, vous pouvez le faire de deux manières.

Publicité
  • Utilisez un chemin relatif pour appeler le script. Déplacer vers le répertoire où le script est présent et exécuter ./Hello_world.sh.
  • Utilisez le chemin absolu pour appeler le script. De n’importe où dans le système de fichiers, saisissez le chemin d’accès complet au script.
$ ./Hello_world.sh
$ pwd
$ /home/karthick/Hello_world
Exécuter Le Script Shell
Exécuter Le Script Shell

Voyons maintenant ce qui se passe lorsque vous essayez de soumettre votre programme sans case. En l’absence de case, le programme sera soumis à n’importe quel shell actuel avec lequel vous utilisez, dans mon cas, c’est Frapper (/ bin / bash).

Laissez-moi vous montrer un exemple. Je crée un script python sans case et quand j’appelle le programme, frapper ne sait pas qu’il devrait soumettre ce programme à l’interpréteur python à la place, il exécutera le programme dans le shell actuel.

$ cat > run-py.py
echo $SHELL
print("Hello world")

$ chmod +x run-py.py
$ ./run-py.py
Mauvais Interprète Dans Le Script
Mauvais Interprète Dans Le Script

Dans ce cas, vous pouvez appeler le programme en mentionnant sur quel interprète il doit être soumis ou simplement ajouter le case ligne qui est toujours recommandée.

# which python3
$(which python3) /home/karthick/run_py.py
Script D'Appel Avec Interprète
Script D&Rsquo;Appel Avec Interprète

Maintenant que vous savez comment appeler le script, l’étape suivante consiste à comprendre ce qui se passe lorsque nous appelons le script. Lorsque vous appelez le script comme indiqué dans les exemples ci-dessus, il créera un processus enfant (fourche) et le script sera soumis au processus enfant. J’ai exécuté un exemple de script qui exécutera simplement la commande suivante et montre que le script est soumis à un processus enfant.

$ ps -ef --forest | grep -i bash
Fourche
Fourche

Il peut y avoir plusieurs processus enfants dans le cadre du script et cela dépend de notre code. Il est à noter que les variables d’environnement créées par l’indice seront supprimées une fois terminé. Un processus enfant peut accéder aux variables créées par le processus parent en les exportant. Mais le processus parent ne peut pas accéder aux variables créées par le processus enfant.

Jetez un œil aux articles ci-dessous pour en savoir plus sur le fonctionnement des variables et comment exporter les variables.

Recherche du script

« La source»Est une commande intégrée au shell qui lit le fichier qui lui est passé comme argument et exécute le code dans l’environnement shell actuel. Un cas d’utilisation approprié que vous utilisez principalement est la modification de votre configuration dans .bashrc ou .bash_profile et recharger les modifications à l’aide du commande source.

$ type -a source
Commande Intégrée Shell
Commande Intégrée Shell

Il existe deux manières syntaxiques d’exécuter le commande source. Vous pouvez choisir n’importe qui parmi deux syntaxes et c’est un choix personnel.

$ source FILE_NAME [ARGUMENTS]
$ . FILE_NAME [ARGUMENTS]

Laissez-moi vous montrer comment la source fonctionne réellement. Je vais créer deux scripts shell. Le premier script (Module.sh) va contenir certaines variables et fonctions. Le deuxième script (Main.sh) va imprimer la variable et appeler la fonction.

Déposer Module.sh.

#!/usr/bin/env bash

VAR1=$(echo "Welcome to $1")

function f1(){
  echo “Function f1 is called”
}

Déposer Main.sh.

#!/usr/bin/env bash

echo $VAR1
f1
Exemples De Codes De Script
Exemples De Codes De Script

Définissez l’autorisation d’exécution du script et appelez le script principal « Main.sh ». Maintenant, ce script essaiera de trouver la fonction f1 et variable VAR1 dans l’environnement shell actuel et échouera avec la commande introuvable.

$ bash main.sh
Avant Le Sourcing Du Script
Avant Le Sourcing Du Script

Maintenant, exécutons la commande source à l’intérieur du script qui chargera la variable et les fonctions dans l’environnement shell actuel et qui sera accessible par « Main.sh ».

Déposer Module.sh.

#!/usr/bin/env bash

VAR1=$(echo "Welcome to $1")

function f1(){
  echo "Function f1 is called"
}

Déposer Main.sh.

#!/usr/bin/env bash

source module.sh Tecmint
echo $VAR1
f1
Exemples De Codes De Script Avec Sourcing
Exemples De Codes De Script Avec Sourcing

Maintenant, exécutez à nouveau le script et voyez.

$ bash main.sh
Après L'Approvisionnement Du Script
Après L&Rsquo;Approvisionnement Du Script

Le la source est très utile dans frapper suivre l’approche de programmation modulaire en créer nos scripts shell. Nous pouvons diviser notre code en modules plus petits et peut être utilisé dans de nombreux programmes. De cette manière, nous pouvons suivre le SÉCHER (Ne vous répétez pas) principe.

Voilà pour cet article. Nous avons brièvement discuté de la différence entre l’approvisionnement et le forking dans bash. Parcourez l’article et partagez vos précieux commentaires avec nous.

Si vous appréciez ce que nous faisons ici sur TecMint, vous devriez considérer:

TecMint est le site communautaire à la croissance la plus rapide et le plus fiable pour tout type d’articles, de guides et de livres Linux sur le Web. Des millions de personnes visitent TecMint! pour rechercher ou parcourir les milliers d’articles publiés disponibles GRATUITEMENT à tous.

Si vous aimez ce que vous lisez, pensez à nous acheter un café (ou 2) en guise de remerciement.

Soutenez-Nous

Nous sommes reconnaissants de votre soutien sans fin.

.

Rate this post
Publicité
Article précédentLe Canada déclare l’ingérence présumée de Trump dans l’affaire d’extradition du «  théorique  » de Meng de Huawei
Article suivantcdiscount: Le match des forfaits mobiles 80Go se joue entre Cdiscount et Coriolis
Avatar De Violette Laurent
Violette Laurent est une blogueuse tech nantaise diplômée en communication de masse et douée pour l'écriture. Elle est la rédactrice en chef de fr.techtribune.net. Les sujets de prédilection de Violette sont la technologie et la cryptographie. Elle est également une grande fan d'Anime et de Manga.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici