Comment créer et exécuter un fichier .sh sous Linux

Sous Linux, un fichier .sh est un script shell exécutable contenant une série de commandes qui s’exécutent les unes après les autres. Il est couramment utilisé pour simplifier des opérations complexes, automatiser des tâches et exécuter des programmes.

Il est essentiel de savoir comment créer et exécuter un fichier shell lorsque vous gérez un système Linux. Cela rend l’administration du système plus efficace et moins sujette aux erreurs.

Dans ce tutoriel, vous apprendrez à exécuter un fichier .sh sous Linux à l’aide de la ligne de commande et de l’interface graphique. Nous vous expliquerons également comment créer ce fichier et définir les droits d’accès appropriés pour exécuter le script sans difficulté.

En bref

  • Pour exécuter un fichier .sh sous Linux, créez le script, ajoutez un shebang tel que #!/bin/bash, puis enregistrez-le avec l’extension .sh.
  • Avant d’exécuter le script, attribuez au fichier les droits d’exécution à l’aide de la commande sudo chmod +x script.sh ou via le menu Droits d’accès de l’interface graphique.
  • Exécutez-le ensuite avec la commande ./script.sh, lancez-le avec bash ou sh, exécutez-le en tant qu’autre utilisateur avec runuser, ou laissez-le s’exécuter en arrière-plan avec & ou nohup.

Qu’est-ce qu’un fichier .sh ?

Un fichier .sh, ou script shell, est un élément exécutable contenant une série de commandes. Lorsque vous l’exécutez, votre shell, c’est-à-dire l’interpréteur de commandes, lit son contenu et exécute les commandes les unes après les autres.

Ce type de fichier est couramment utilisé en administration système en raison de ses avantages, tels que :

  • Efficacité : au lieu d’exécuter plusieurs commandes individuellement, vous pouvez effectuer une tâche complexe en exécutant un seul fichier de script shell.
  • Cohérence : un fichier .sh effectue toujours la même tâche et produit le même résultat, ce qui réduit au minimum les erreurs humaines.
  • Automatisation : grâce à une cron job, vous pouvez exécuter automatiquement un fichier .sh à un intervalle précis ou à un moment donné afin de gérer plus efficacement les tâches répétitives.
  • Réutilisation : vous pouvez facilement partager un fichier .sh avec d’autres membres de l’équipe ou le réutiliser dans un autre projet pour effectuer la même tâche. 
  • Maintenance facilitée : les fichiers .sh sont faciles à modifier, à tester et à déboguer, car ils sont similaires aux autres fichiers texte.

Comment créer un fichier .sh ?

Les étapes de création d’un fichier .sh sont les mêmes quel que soit le système d’exploitation Linux que vous utilisez. Elles diffèrent toutefois selon que vous utilisez une ligne de commande ou une interface graphique.

Créer un fichier .sh avec la ligne de commande

Avant de créer un fichier .sh, ouvrez le terminal de votre système pour accéder à son interface en ligne de commande (CLI). Si vous travaillez avec un serveur Linux distant, connectez-vous à celui-ci via SSH à l’aide de PuTTY ou d’un terminal.

Les utilisateurs de l’hébergement VPS Linux Hostinger peuvent également se connecter facilement à leur serveur directement via leur navigateur web à l’aide du Terminal de navigateur de hPanel.

Une fois connecté, suivez ces étapes pour créer un nouveau fichier de script shell :

  1. Exécutez la commande suivante pour créer un fichier .sh vide. Remplacez script par le nom de votre choix :
sudo touch script.sh
  1. Ouvrez le nouveau fichier avec votre éditeur de texte préféré. Dans ce tutoriel, nous utiliserons Nano :
sudo nano script.sh
  1. L’éditeur de texte s’ouvre. Ajoutez la ligne shebang suivante en haut du fichier pour indiquer quel interpréteur de shell votre système doit utiliser pour lire le contenu du fichier. Par exemple, nous allons créer un script bash :
#!/bin/bash
  1. À la ligne suivante, ajoutez quelques commandes par ordre chronologique. Cela pourrait ressembler à ceci :
# Mettre à jour les dépôts

sudo apt update

# Installer les mises à jour disponibles

sudo apt upgrade
  1. Une fois terminé, appuyez sur Ctrl + X, puis sur Y, et enfin sur Entrée pour enregistrer le fichier.

Important ! L’interpréteur de shell de votre système ignorera les lignes commençant par un signe dièse (#), à l’exception du shebang. Cette convention sert généralement à ajouter des commentaires ou des notes, afin de fournir davantage de contexte à toute personne lisant ou modifiant le script.

Création d’un fichier .sh depuis l’interface graphique

Voici comment créer un fichier .sh depuis l’interface graphique sur votre bureau Linux. La procédure générale devrait être la même quelle que soit votre distribution, mais l’emplacement des boutons peut varier légèrement.

Dans ce tutoriel, nous allons vous montrer comment procéder sous Ubuntu :

  1. Cliquez sur Afficher les applications dans le lanceur de votre bureau.
  1. Sélectionnez Éditeur de texte
  2. Saisissez le shebang et vos commandes. Cliquez sur Enregistrer.
  1. Sélectionnez l’emplacement où vous souhaitez enregistrer le script. Cliquez sur Enregistrer pour confirmer.
  2. Saisissez un nom pour votre script. Veillez à ce qu’il se termine par l’extension .sh
  3. Cliquez sur Enregistrer

Configuration des droits d’exécution d’un fichier .sh

Pour des raisons de sécurité, les fichiers .sh ne sont pas exécutables par défaut sous Linux. Vous devez définir les droits d’accès appropriés avant de les exécuter.

Pour rendre le fichier exécutable, accordez le droit d’exécution à l’aide de la commande chmod comme indiqué ci-dessous. N’oubliez pas de remplacer le nom du fichier en conséquence :

sudo chmod +x script.sh

Notez que cette commande n’accordera le droit d’exécution qu’au propriétaire ou au créateur du fichier. Cela signifie qu’un autre utilisateur ne pourra pas exécuter le script en tant que programme, sauf s’il utilise sudo.

Important ! Bien que vous puissiez attribuer des droits d’exécution à tous les utilisateurs, nous vous le déconseillons pour des raisons de sécurité. La meilleure pratique consiste à ne rendre un script bash exécutable que pour son propriétaire.

Vous pouvez également modifier les autorisations de votre fichier .sh via l’interface graphique. Voici, par exemple, comment procéder sous Ubuntu :

  1. Cliquez avec le bouton droit de la souris sur votre fichier .sh et sélectionnez Propriétés.
  2. Sélectionnez l’onglet Droits d’accès.
  1. Cochez la case Autoriser l’exécution du fichier en tant que programme.
  2. Fermez la fenêtre de dialogue. 

Bien que vous puissiez exécuter un fichier .sh, il se peut que vous ne puissiez pas exécuter l’intégralité de son contenu. Lors de l’exécution du script, une erreur de droits d’accès peut tout de même survenir.

Cela est dû au fait que l’utilisateur actuel ne dispose pas des autorisations suffisantes pour exécuter des commandes ou modifier un élément spécifié dans le fichier .sh.

Exécution d’un fichier .sh

Il existe différentes façons d’exécuter un fichier .sh selon les cas d’utilisation spécifiques. Dans cette section, nous aborderons les quatre méthodes les plus courantes.

Exécuter un fichier .sh normalement

La façon la plus simple d’exécuter un fichier .sh consiste à saisir son nom dans votre interface de ligne de commande, comme suit :

./script.sh

Cette commande ne fonctionne que si votre fichier .sh se trouve dans le répertoire courant. Si votre script se trouve dans un autre dossier, indiquez son chemin complet comme suit :

./chemin/vers/dossier/script.sh

Si vous utilisez une interface graphique, vous pouvez facilement exécuter un fichier .sh en cliquant dessus avec le bouton droit de la souris et en sélectionnant Exécuter en tant que programme.

Bien que simple, cette méthode présente l’inconvénient que votre script ne peut s’exécuter qu’à l’aide de l’interpréteur de shell spécifié dans le shebang.

Utilisation d’un interpréteur spécifique

Dans certains cas, vous pouvez avoir besoin d’exécuter votre script shell à l’aide d’un interpréteur spécifique. Cela s’avère utile dans plusieurs situations, par exemple lorsque vous ne disposez pas des droits nécessaires pour exécuter le fichier.

Exécuter un fichier .sh non exécutable

Techniquement, vous pouvez exécuter un script non exécutable en spécifiant explicitement l’interpréteur de shell. Cependant, cela n’exécutera pas le fichier en tant que programme : cela se contentera de lire le contenu du fichier.

Cela ne présente aucun risque de sécurité, car l’utilisateur doit tout de même disposer des droits nécessaires pour exécuter les commandes et modifier les fichiers spécifiés dans le script.

Vous pouvez exécuter votre fichier .sh à l’aide d’un shell spécifique en le précisant au début de votre commande. Cela remplacera l’interpréteur spécifié dans le shebang.

Il existe divers autres interpréteurs de shell ayant chacun leur propre fonctionnement. Les deux plus courants sous Linux sont sh et sa version moderne, bash. Voici à quoi ressembleront vos commandes lorsque vous exécuterez un script à l’aide de l’un de ces shells :

bash script.sh

sh script.sh

Exécution d’un fichier .sh en tant qu’autre utilisateur

Les administrateurs système exécutent les fichiers .sh en tant qu’utilisateur ou groupe spécifique pour plusieurs raisons. Par exemple, utiliser un compte dédié à l’exécution de scripts pour de nombreuses opérations similaires permet de simplifier la gestion des tâches.

Pour des raisons de sécurité, il est également conseillé d’exécuter un fichier .sh en tant que propriétaire plutôt qu’en tant que root. Cette procédure vous évite d’accorder des privilèges excessifs pendant l’opération, ce qui pourrait affecter d’autres parties du système.

Par exemple : vous exécutez un script qui nettoie un répertoire, mais la variable spécifiant le chemin d’accès est manquante. Si vous exécutez ce fichier .sh en tant que root, vous supprimerez le répertoire principal /home. Cela ne se produira pas avec des utilisateurs non root, car leurs droits d’accès sont insuffisants.

Pour exécuter un fichier .sh en tant qu’autre utilisateur, utilisez la syntaxe de commande suivante :

runuser -u [nom d’utilisateur] -- [/chemin/vers/script.sh]

Par exemple, si vous souhaitez exécuter un script de surveillance en tant qu’utilisateur « cron », votre commande ressemblera à ceci :

runuser -u cron --/program/automation/monitoring.sh

Si vous souhaitez exécuter un fichier .sh en tant que membre d’un groupe spécifique, ajoutez simplement l’option -g à la commande ci-dessus.

runuser -u cron -g automation --/program/automation/monitoring.sh

Dans l’exemple ci-dessus, nous exécutons le script monitoring.sh en tant qu’utilisateur cron au sein du groupe automation.

Exécution d’un script en arrière-plan

Par défaut, les fichiers .sh s’exécutent dans le shell de votre terminal principal. Cela peut poser problème si vous exécutez un script qui doit fonctionner en continu, par exemple pour la surveillance ou la journalisation.

Dans ce cas, exécutez votre fichier .sh en arrière-plan afin de pouvoir continuer à utiliser le terminal principal pendant que le script s’exécute. La manière la plus simple d’y parvenir consiste à ajouter une esperluette (&) à la fin de votre commande :

./script.sh &

Le terminal affichera l’ID du processus du script, que vous pourrez utiliser ultérieurement pour arrêter le processus à l’aide de la commande kill.

Si vous souhaitez que le script continue de s’exécuter en arrière-plan après la fermeture du terminal, vous pouvez utiliser la commande nohup :

nohup ./script.sh &

Une méthode plus structurée pour exécuter un script en arrière-plan consiste à utiliser un multiplexeur de terminal tel que GNU Screen ou tmux. Cet outil crée un shell virtuel qui peut continuer à s’exécuter même après que vous vous soyez déconnecté de la session SSH.

Conclusion

Un fichier .sh est un script exécutable contenant une série de commandes. Il est principalement utilisé pour simplifier des opérations complexes, exécuter des programmes et automatiser des tâches sous Linux.

Pour créer un fichier .sh, il suffit d’utiliser la commande touch, puis d’ajouter des commandes au fichier à l’aide d’un éditeur de texte tel que Nano. Si vous utilisez une interface graphique, ouvrez simplement un éditeur de texte pour rédiger et enregistrer votre script à l’emplacement de votre choix.

Rendez ensuite le fichier .sh exécutable en lui attribuant les droits d’accès appropriés à l’aide de la commande chmod. Vous pouvez effectuer cette opération via l’interface graphique en accédant à l’onglet Droits d’accès dans le menu Propriétés du fichier.

Exécutez le script .sh en indiquant son nom dans le terminal Linux. Vous pouvez également l’exécuter explicitement avec un interpréteur de shell tel que bash. Si vous utilisez une interface graphique, cliquez avec le bouton droit sur le fichier, puis sélectionnez Exécuter en tant que programme.

FAQ sur les fichiers .sh

Qu’est-ce qu’un fichier .sh ?

Sous Linux, un fichier .sh est un fichier exécutable contenant une série de commandes. Considérez-le comme un script qui définit une suite d’actions exécutées par la ligne de commande de votre système.

Ce fichier est utile pour automatiser des tâches, exécuter des programmes ou simplifier l’exécution des commandes. En plus de vous faire gagner du temps et de vous épargner des efforts, il contribue à réduire les erreurs humaines.

Quels sont les droits d’accès requis pour un fichier .sh ?

Un fichier .sh nécessite les droits de lecture, d’écriture et d’exécution pour fonctionner correctement. Ces droits vous permettent de consulter, de modifier et d’exécuter le script.

Toutefois, pour des raisons de sécurité, vous n’accordez généralement ces privilèges qu’au propriétaire du fichier. Les autres utilisateurs peuvent l’exécuter avec la commande sudo.

Puis-je modifier un fichier .sh avec n’importe quel éditeur de texte ?

Oui. Un script bash .sh fonctionne comme n’importe quelle autre extension de fichier, ce qui signifie que vous pouvez le modifier à l’aide de différents éditeurs de texte. Par exemple, vous pouvez l’ouvrir avec Nano, Vim, Gedit, etc.

Veillez toutefois à disposer des droits d’écriture sur le fichier .sh, faute de quoi vous ne pourrez pas le modifier.

Tout le contenu des tutoriels de ce site est soumis aux normes éditoriales et aux valeurs rigoureuses de Hostinger.

Author
L'auteur

Faradilla Ayunindya

Faradilla, plus connue sous le nom de Ninda, possède 10 ans d’expérience en tant que linguiste et 5 ans en tant que spécialiste du marketing de contenu chez Hostinger. Elle aime suivre les tendances technologiques et aider les autres à résoudre leurs problèmes. Pendant son temps libre, Ninda aime apprendre de nouvelles langues et s’intéresser aux sciences de la vie, ainsi que regarder des vidéos d’animaux. Pour en savoir plus sur Ninda, retrouvez-la sur LinkedIn.

Ce que disent nos clients

Commentaires

0 responses

Write a respond

Veuillez remplir les champs obligatoires.Veuillez cocher la case de la confidentialité.Veuillez remplir les champs obligatoires et accepter la case de confidentialité.

Thank you! Your comment has been successfully submitted. It will be approved within the next 24 hours.