Bash shell 'exec', 'ev', 'source' - quelle est la différence

Bash shell 'exec', 'ev', 'source' - quelle est la différence

Parmi les nombreuses fonctionnalités des scripts bash figurent les commandes Exec, EVAL et Source, qui peuvent être utilisées pour exécuter des commandes, exécuter des scripts et définir des variables d'environnement. Dans cet article, nous discuterons de chacune de ces commandes et comment elles peuvent être utilisées dans les scripts bash.

EXEC en script bash

Cette commande remplace le processus en cours d'exécution actuel par un nouveau processus car il peut être utilisé pour exécuter une nouvelle commande dans le même shell, ou pour remplacer le shell actuel par un nouveau. Par exemple, pour remplacer le shell actuel par un nouveau shell bash, vous pouvez utiliser la commande exec bash. Cela créera un nouveau shell avec le même environnement que le shell actuel, mais toutes les modifications apportées dans la nouvelle coquille ne seront pas visibles dans l'ancien shell.

exécutif

Voici le code d'exemple de script bash qui utilise cette commande exec:

#!/ bac / bash
Echo "Démarrage du script…"
ls -l
Echo "Script terminé."

La commande exec est utilisée pour remplacer le processus de shell actuel par une commande ou un script spécifié, donc dans cet exemple, le script imprime un message à l'aide de la commande echo, puis exécute la commande ls -l à l'aide d'exec. Étant donné que Exec remplace le processus actuel par LS -L, la commande ECHO suivante n'est jamais exécutée.

EVAL dans les scripts de bash

La commande EVAL est utilisée pour évaluer une commande qui est stockée dans une variable de chaîne car cela est utile lorsque vous devez générer dynamiquement une commande basée sur l'entrée utilisateur ou d'autres variables. Par exemple, si vous avez un CMD variable qui contient une commande, vous pouvez utiliser la commande EVAL $ CMD pour exécuter la commande stockée dans la variable CMD.

évaluer

Voici le code d'exemple bash qui utilise cette commande exec:

#!/ bac / bash
# Exemple de commande eval
cmd = "echo bonjour, monde!"
évaluer $ cmd

La commande EVAL est utilisée pour exécuter une commande shell qui est construite dynamiquement à l'exécution, donc dans cet exemple, la variable CMD est définie sur la chaîne «Echo Hello, World!". La commande EVAL est ensuite utilisée pour exécuter le contenu de CMD, qui imprime le message «Bonjour le monde!«À la console.

Source en script bash

La commande source est utilisée pour exécuter des commandes stockées dans un fichier et est utile lorsque vous avez un script qui définit les variables d'environnement ou définit les fonctions que vous souhaitez utiliser dans votre shell actuel. Par exemple, si vous avez un script My_Script.SH qui définit les variables d'environnement, vous pouvez utiliser la commande de commande my_script.sh pour exécuter le script et définir les variables d'environnement dans votre shell actuel.

source < file-name>

Voici l'exemple Bash Code exécute un script shell dans un script à l'aide de la commande source:

#!/ bac / bash
# Exemple de commande source
source ./ bashfile2.shot

La commande source est utilisée pour exécuter les commandes dans un script spécifié dans l'environnement shell actuel, donc dans cet exemple, le script my_script.SH est exécuté à l'aide de la source. Les commandes dans Bashfile2.SH sont exécutés dans l'environnement du shell actuel, qui peut être utile pour définir des variables d'environnement ou définir des fonctions qui seront utilisées.

Conclusion

Le bash fournit des commandes puissantes telles que l'exec, l'évaluation et la source qui peuvent être utilisées pour gérer les systèmes Linux. La commande EXEC est utilisée pour remplacer le processus actuel par un nouveau, la commande EVAL est utilisée pour évaluer une commande stockée dans une variable, et la commande source est utilisée pour exécuter les commandes stockées dans un fichier. Ces commandes peuvent être très utiles dans les tâches de script et d'automatisation et peuvent vous aider à travailler plus efficacement dans la coquille de bash.