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 vais faire 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 à une ligne pour rendre les choses aussi simples que possible:
:~/Scripts$ cat hello.sh echo "Hello World!"
Méthode 1 : Exécution d’un script shell en passant le fichier en argument à shell
La première méthode consiste à passer le nom du fichier script en 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.
Si vous n’êtes pas déjà familier, je vous conseille de lire mon guide détaillé sur l’autorisation des 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.
Dans cette approche, vous avez explicitement spécifié que vous souhaitez 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 tels que ksh, zsh, etc. Si vous avez d’autres shells installés, vous pouvez également l’utiliser à la place de bash.
Par exemple, j’ai installé zsh et l’ai utilisé pour exécuter le même script:
Lecture Recommandée:
Méthode 2 : Exécutez un 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.
Donc, vous devez d’abord vous assurer que votre script a 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 que votre script est exécutable, il vous suffit de taper le nom du fichier avec son chemin absolu ou relatif. Le plus souvent, vous êtes dans le même répertoire, vous l’utilisez donc comme ceci:
./script.sh
Si vous n’êtes pas dans le même répertoire que votre script, vous pouvez lui spécifier le chemin absolu ou relatif du script:
Ça./ avant que le script soit important (lorsque vous êtes dans le même répertoire que le script)
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:
:~$ 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 avec des autorisations d’exécution dans l’un des répertoires suivants peut être exécuté de n’importe où dans le système:
- / accueil / abhishek /.le fichier local/bin
- / usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/games
- /usr/local/games
- /snap/bin
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 de n’importe où sur votre système simplement en utilisant leurs noms. Voir, la commande ls se trouve dans le répertoire /usr/bin.
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.
Pourquoi la plupart des scripts shell contiennent # ! /bin/bash au début des scripts shell ?
Rappelez-vous comment j’ai mentionné que 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éteur. Si vous ne le faites pas et exécutez un script./script.de manière sh, il est généralement exécuté avec le shell que vous utilisez.
Est-ce important? Ça pourrait. Voir, la plupart de la syntaxe du shell est commune dans 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.
En utilisant #! /bin/bash indique que le script est un script shell bash et doit être exécuté avec bash comme interpréteur 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 cliquer sur cet article sur les choses que j’ai manquées. Mais le problème avec de tels sujets débutants est qu’il n’est pas facile de trouver le bon équilibre des informations et d’éviter d’avoir trop ou trop peu de détails.
Si vous êtes intéressé par l’apprentissage du script bash, nous avons toute une série de débutants Bash sur notre manuel Linux du site Web axé sur les administrateurs système. Si vous le souhaitez, vous pouvez également acheter l’ebook avec des exercices supplémentaires pour prendre en charge le manuel Linux.
Vous aimez ce que vous lisez ? Veuillez le partager avec d’autres.
- Facebook0
- Twitter49
- LinkedIn1
- Reddit0