GNU/Linux >> Tutoriels Linux >  >> Linux

Exécution du script avec ". » Et avec « source » ?

  1. Je me demandais si les deux manières suivantes d'exécuter un script bash
    sont équivalentes ?

    . ./myScript.sh
    
    source myScript.sh
    
  2. Exécutent-ils tous les deux le contenu du script au lieu d'exécuter le script, c'est-à-dire qu'ils ne créent pas de sous-shell pour exécuter le script ?

Réponse acceptée :

  1. Ils sont équivalents en bash en ce sens qu'ils font exactement la même chose. Par contre, source est plus long de 5 caractères et n'est pas portable pour les shells POSIX uniquement ou Bourne alors que . (point) est, donc je ne prends jamais la peine d'utiliser source .

  2. C'est exact - le sourcing d'un fichier exécute les commandes dans le shell actuel et cela affectera votre environnement shell actuel. Vous pouvez toujours passer des arguments au fichier source et bash regardera en fait dans $PATH pour le nom du fichier comme une commande normale s'il ne contient pas de barres obliques.

Sans rapport avec la question initiale de . contre source , mais dans votre exemple,

. ./myScript.sh 

n'est pas identique à

source myScript.sh

car tant que . et source sont fonctionnellement identiques, myScript.sh et ./myScript.sh ne sont pas les mêmes. Depuis ./myScript.sh contient une barre oblique, il est interprété comme un chemin et le shell utilise simplement ./myScript.sh . Cependant, myScript.sh n'a pas de barre oblique donc le shell fait un $PATH cherchez-le d'abord. Il s'agit du comportement standard spécifié par POSIX pour . . La plupart des shells utilisent cette option par défaut, bien qu'ils puissent ajouter des extensions (telles que la recherche dans le répertoire de travail actuel après la recherche du chemin) ou des options pour modifier le comportement de . /source .


Linux
  1. Couper avec Lvm et Dm-crypt ?

  2. Fusionner des dossiers avec Mv ?

  3. Vérifier qu'un script est en cours d'exécution ?

  4. Shell Script Wrapper pour empêcher l'exécution de la commande sans arguments ?

  5. Lancer phpmyadmin et suphp

Cartographie mentale open source avec Draw.io

Transférez des fichiers entre votre téléphone et Linux avec cet outil open source

Une introduction aux diffs et aux patchs

Comment écrire un script bash avec des exemples

Domotique :Exécuter Home Assistant avec Podman

Script Linux pour vérifier si le processus est en cours d'exécution et agir sur le résultat