Comment exécuter un script shell sous Linux 2022

Il existe deux façons d’exécuter un script shell sous Linux. Vous pouvez utiliser:

bash script.sh

Ou vous pouvez exécuter le script shell comme ceci :

./script.sh

C’est peut-être simple, mais cela n’explique pas grand-chose. Ne vous inquiétez pas, je ferai les explications nécessaires avec des exemples afin que vous compreniez pourquoi une syntaxe particulière est utilisée dans le format donné lors de l’exécution d’un script shell.

Je vais utiliser ce script shell d’une ligne pour rendre les choses aussi simples que possible :

[email protected]:~/Scripts$ cat hello.sh 

echo "Hello World!"

Méthode 1 : Exécution d’un script shell en passant le fichier comme argument au shell

La première méthode consiste à transmettre le nom du fichier de script en tant qu’argument au shell.

Considérant que bash est le shell par défaut, vous pouvez exécuter un script comme celui-ci :

bash hello.sh

Connaissez-vous l’avantage de cette approche ? Votre script n’a pas besoin d’avoir l’autorisation d’exécution . Assez pratique pour des tâches simples et rapides.

Exécuter un script shell Linux
Exécution d’un script shell Linux

Si vous n’êtes pas déjà familier, je vous conseille de lire mon guide détaillé sur les permissions de fichiers sous Linux .

Gardez à l’esprit qu’il doit s’agir d’un script shell que vous passez en argument. Un script shell est composé de commandes. Si vous utilisez un fichier texte normal, il se plaindra de commandes incorrectes.

Exécution d'un fichier texte en tant que script sous Linux
Exécution d’un fichier texte en tant que script

Dans cette approche, vous avez explicitement spécifié que vous souhaitiez utiliser bash comme interpréteur pour le script.

Shell n’est qu’un programme et bash en est une implémentation. Il existe d’autres programmes shell tels que ksh, zsh , etc. Si vous avez d’autres shells installés, vous pouvez également les utiliser à la place de bash.

READ  Comment vérifier si un fichier ou un répertoire existe dans Bash Shell

Par exemple, j’ai installé zsh et je l’ai utilisé pour exécuter le même script :

Exécuter le script shell avec Zsh
Exécuter le script shell avec Zsh

Méthode 2 : exécuter le script shell en spécifiant son chemin

L’autre méthode pour exécuter un script shell consiste à fournir son chemin. Mais pour que cela soit possible, votre fichier doit être exécutable. Sinon, vous aurez une erreur “autorisation refusée” lorsque vous essayez d’exécuter le script.

Vous devez donc d’abord vous assurer que votre script dispose de l’autorisation d’exécution. Vous pouvez utiliser la commande chmod pour vous donner cette autorisation comme ceci :

chmod u+x script.sh

Une fois votre script exécutable, il ne vous reste plus qu’à saisir le nom du fichier ainsi que son chemin absolu ou relatif . Le plus souvent, vous êtes dans le même répertoire, vous l’utilisez donc simplement comme ceci :

./script.sh

Si vous n’êtes pas dans le même répertoire que votre script, vous pouvez lui indiquer le chemin absolu ou relatif vers le script :

Exécution d'un script shell dans un autre répertoire
Exécution d’un script shell dans un autre répertoire

Ce ./ avant le script est important (lorsque vous êtes dans le même répertoire que le script)

Exécuter des scripts shell Linux

Pourquoi ne pouvez-vous pas utiliser le nom du script lorsque vous êtes dans le même répertoire ? En effet, vos systèmes Linux recherchent les exécutables à exécuter dans quelques répertoires sélectionnés spécifiés dans la variable PATH.

Voici la valeur de la variable PATH pour mon système :

[email protected]:~$ echo $PATH
/home/abhishek/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Cela signifie que tout fichier disposant d’autorisations d’exécution dans l’un des répertoires suivants peut être exécuté depuis n’importe où dans le système :

  • /home/abhishek/.local/bin
  • /usr/local/sbin
  • /usr/local/bin
  • /usr/sbin
  • /usr/bin
  • /sbin
  • /poubelle
  • /usr/jeux
  • /usr/local/jeux
  • /snap/poubelle

Les fichiers binaires ou exécutables pour les commandes Linux telles que ls, cat, etc. se trouvent dans l’un de ces répertoires. C’est pourquoi vous pouvez exécuter ces commandes depuis n’importe où sur votre système en utilisant simplement leurs noms. Voir, la commande ls se trouve dans le répertoire /usr/bin.

Localisation de la commande Linux

Lorsque vous spécifiez le script SANS le chemin absolu ou relatif, il ne peut pas le trouver dans les répertoires mentionnés dans la variable PATH.

READ  5 raisons pour lesquelles vous devriez utiliser OpenSUSE

Pourquoi la plupart des scripts shell contiennent # ! /bin/bash au début des scripts shell ?

Rappelez-vous comment j’ai mentionné que le shell n’est qu’un programme et qu’il existe différentes implémentations de shells.

Lorsque vous utilisez le # ! /bin/bash, vous spécifiez que le script doit s’exécuter avec bash comme interprète. Si vous ne le faites pas et que vous exécutez un script de manière ./script.sh, il est généralement exécuté avec le shell que vous exécutez.

Est-ce que ça importe? Ça pourrait. Vous voyez, la plupart de la syntaxe du shell est commune à tous les types de shell, mais certaines peuvent différer.

Par exemple, le comportement du tableau est différent dans les shells bash et zsh. Dans zsh, l’index du tableau commence à 1 au lieu de 0.

Bash contre Zsh
Bash contre Zsh

Utilisant #! /bin/bash indique que le script est un script shell bash et doit être exécuté avec bash comme interprète, quel que soit le shell utilisé sur le système. Si vous utilisez une syntaxe spécifique à zsh, vous pouvez indiquer qu’il s’agit d’un script zsh en ajoutant # ! /bin/zsh comme première ligne du script.

L’espace entre #! /bin/bash n’a pas d’importance. Vous pouvez également utiliser #!/bin/bash.

Était-ce utile ?

J’espère que cet article a ajouté à vos connaissances Linux. Si vous avez encore des questions ou des suggestions, veuillez laisser un commentaire.

Les utilisateurs experts peuvent toujours pinailler cet article sur les choses que j’ai manquées. Mais le problème avec ces sujets pour débutants est qu’il n’est pas facile de trouver le bon équilibre d’informations et d’éviter d’avoir trop ou trop peu de détails.

5/5 - (1 vote)
SAKHRI Mohamed
SAKHRI Mohamed

Le blog d'un passionné d'informatique qui partage des actualités, des tutoriels, des astuces, des outils en ligne et des logiciels pour Windows, macOS, Linux, Web designer et jeux vidéo.

Publications: 3764

Laisser un commentaire

Your email address will not be published.