GNU/Linux >> Tutoriels Linux >  >> Linux

Commande source sur Linux expliquée

La commande source sur Linux est une fonction très populaire exécutée quotidiennement par les administrateurs système.

Mais quelle est la fonction de la commande source ?

Utilisé pour actualiser l'environnement shell actuel , la commande source peut également être utilisée pour importer des fonctions dans d'autres scripts bash ou pour exécuter des scripts dans l'environnement shell actuel.

Dans le tutoriel d'aujourd'hui, nous allons voir comment la commande source doit être utilisée sous Linux.

Les commandes seront exécutées dans un environnement Debian 10 avec GNOME, mais elles fonctionneront pour toutes les distributions.

Internes de la commande source

Avant de commencer, il est important de bien comprendre ce que sont les variables d'environnement et de shell.

Par défaut, sous Linux, votre système possède déjà quelques variables d'environnement pour stocker diverses informations telles que le shell à utiliser, votre nom d'hôte ou votre nom d'utilisateur actuel.

Les variables d'environnement sont initialisées par le système et sont héritées par tous les processus du système. Par conséquent, lorsque vous exécutez une instance de shell, vous devez obtenir la valeur des variables d'environnement sur votre système.

$ echo $USER
devconnected

D'autre part, les variables shell sont des variables déclarées dans le contexte d'une instance shell et ils ne sont pas partagés avec d'autres shells ou avec des processus enfants.

$ VARIABLE=devconnected
$ echo $VARIABLE
devconnected

Sous Linux, lorsque vous exécutez un script, il est très probablement exécuté dans un sous-shell.

Par conséquent, vous ne pourrez pas exécuter les variables définies dans votre premier shell dans le script, elles ne partagent tout simplement pas le même environnement.

C'est ce que résout la commande source.

La commande source est utilisée afin d'évaluer le fichier passé en argument dans le contexte de l'exécution en cours. Raccourcie en '.', la commande source est principalement utilisée dans le contexte de shells exécutés dans des fenêtres de terminal.

$ source filename [arguments]

Notez que lorsque des arguments sont fournis, ils sont définis comme paramètres positionnels pour le script spécifié.

Remarque :la documentation source se trouve dans la documentation bash. Pour le lire, tapez "man bash" et recherchez le paragraphe de commande source.

Source pour mettre à jour votre environnement shell actuel (.bashrc)

L'une des principales raisons d'utiliser la source est pour actualiser l'environnement shell actuel en exécutant le fichier bashrc.

Pour rappel, .bashrc est un fichier de script exécuté chaque fois que vous lancez une instance de shell interactif.

Il est défini pour chaque utilisateur et se trouve dans votre répertoire personnel.

Disons par exemple que vous souhaitez ajouter un nouvel alias à votre environnement shell.

Ouvrez votre fichier .bashrc et une nouvelle entrée.

alias ll='ls -l'

Essayez maintenant d'exécuter votre nouvelle commande d'alias directement dans le terminal.

Comme vous pouvez le constater, les modifications n'ont pas été directement appliquées dans votre environnement actuel.

Pour que les modifications soient appliquées, exécutez la commande source avec le .bashrc fichier comme argument.

$ source ~/.bashrc

Une autre façon de le faire est de l'exécuter avec la syntaxe à points

$ . ~/.bashrc

Si vous essayez à nouveau d'exécuter votre alias, vous devriez pouvoir l'exécuter

Source pour exécuter un script dans le contexte courant

Comme expliqué précédemment, la commande source peut être utilisée pour exécuter un script dans le contexte de l'environnement actuel .

Pour illustrer ce point, définissons une variable shell locale dans votre environnement shell actuel.

$ VARIABLE=devconnected

Maintenant, créez un nouveau script et collez-y le contenu suivant

#!/bin/bash

echo $VARIABLE
echo $LOGNAME

La variable VARIABLE représente la variable shell locale que nous avons créée auparavant et la variable LOGNAME est une variable d'environnement sur votre hôte.

Enregistrez votre script et accordez des autorisations d'exécution à votre script nouvellement créé (vous aurez besoin des privilèges sudo pour exécuter cette commande)

$ sudo chmod ugo+x <script>

Si vous essayez d'exécuter le script, vous devriez voir le résultat suivant

Comme vous pouvez le voir, la variable locale $VARIABLE n'a pas été imprimée sur la sortie standard.

C'est parce que le script a été exécuté dans un sous-shell ayant son propre ensemble de variables locales. La variable d'environnement a cependant été imprimée.

Afin d'exécuter ce script dans le contexte de notre shell actuel, nous allons utiliser la commande source.

Comme vous pouvez le voir, dans ce cas, la variable $VARIABLE a été correctement imprimée sur la sortie standard.

Source pour importer une fonction de script

L'une des grandes fonctionnalités de la commande source est de mettre à jour une fonction de script, permettant une plus grande réutilisation de vos fonctions shell existantes.

Pour illustrer ce point, prenons l'exemple d'une fonction qui affiche l'utilisateur courant sur la sortie standard.

Créez un nouveau fichier de script et collez le contenu suivant à l'intérieur.

$ nano script

#!/bin/bash
# Print the current user to the standard output
printUser() {
   echo $USER
}

Créez un autre script et utilisez la fonction source afin d'importer votre fonction printUser.

$ nano import-script

#!/bin/bash
source ./script
printUser

Attribuez les autorisations appropriées au fichier que vous souhaitez exécuter. Vous n'avez pas besoin d'avoir les autorisations d'exécution pour le fichier contenant la fonction que vous souhaitez importer.

$ sudo chmod u+x import-script
$ ./import-script

C'est ce que vous devriez voir sur votre écran.

Comme vous pouvez le voir, la fonction a été correctement importée et exécutée, en affichant le nom de l'utilisateur actuel de mon hébergeur.

Source pour lire les variables d'un fichier

Une autre utilisation intéressante de la commande source sous Linux consiste à lire des variables à partir d'un fichier.

Disons par exemple que vous avez un fichier avec le contenu suivant dans un fichier nommé "variables

NAME=devconnected
WEBSITE=devconnected.com
DESCRIPTION="best educational website online"

Dans un autre fichier de script, vous pourrez utiliser ces variables en utilisant la commande source pour lire les variables.

Créez un script et collez-y le contenu suivant.

$ nano variable-script

#!/bin/bash
source ./variables
echo $NAME is a website located at $WEBSITE and it is probably the $DESCRIPTION

Dépannage

Dans certains cas, vous pouvez rencontrer des erreurs lorsque vous essayez de sourcer vos fichiers à l'aide de la commande source.

Voici une liste des erreurs courantes lors de la tentative de source des fichiers.

Commande source introuvable sous Linux

Dans certains cas, vous pouvez rencontrer cette erreur

$ source: command not found

Ou en utilisant sudo, vous pouvez également avoir une erreur de commande source introuvable.

$ sudo: source: command not found

La solution la plus simple consiste à exécuter la commande en tant qu'utilisateur root en utilisant "su".

$ sudo -s
$ source .bashrc

Notez que vous pouvez également utiliser la "syntaxe pointée" qui est un équivalent de la commande source.

$ . .bashrc

Conclusion

Dans le didacticiel d'aujourd'hui, vous avez appris quelle est la commande source sous Linux et comment vous pouvez l'utiliser pour exécuter des scripts dans le contexte de l'environnement actuel.

Vous avez également appris qu'il peut être utilisé pour importer des fonctions ou des variables d'un simple fichier vers un fichier de script.

Si vous souhaitez plus de tutoriels liés à l'administration système Linux, nous avons une catégorie complète qui lui est dédiée sur devconnected. Cliquez sur l'image ci-dessous pour les lire.


Linux
  1. La commande d'historique sous Linux expliquée en profondeur

  2. Commande Linux mv

  3. Linux du command

  4. Commande IP Linux

  5. Commande cd Linux

Commande source sous Linux

Explication de la commande procinfo sous Linux

Commande d'écran sur Linux expliquée

Explication de la commande Arping sur Linux

Explication de la commande d'exportation sous Linux

Commande d'exportation sous Linux | Expliqué