Terminal Linux montrant les commandes pour exécuter un fichier .sh

Comment exécuter un fichier .sh sous Linux : commandes et solutions en cas d’erreur

En résumé

  • Depuis le dossier du script, utilisez sh script.sh ou bash script.sh pour le lancer avec un interpréteur.
  • Pour une exécution directe, utilisez chmod +x script.sh, puis ./script.sh.
  • ./ indique que Linux recherche le fichier dans le répertoire courant : vérifiez le chemin et le nom exacts.
  • En cas d’erreur, contrôlez le fichier principal et les éventuels scripts appelés, puis vérifiez les permissions, la shebang et le format.

Pour lancer un fichier .sh sous Linux, placez-vous dans son dossier, puis utilisez sh script.sh ou bash script.sh. Pour l’exécuter directement, accordez d’abord le droit d’exécution avec chmod +x script.sh, puis lancez ./script.sh. Remplacez script.sh par le nom réel du fichier.


1. Se placer dans le dossier du fichier

Ouvrez un terminal et rejoignez le répertoire qui contient le script avec cd :

cd /chemin/du/dossier

Remplacez /chemin/du/dossier par l’emplacement réel du fichier. Vérifiez ensuite que le nom du script et son extension sont exacts. Une majuscule différente, un mauvais dossier ou une extension incorrecte suffit à provoquer une erreur.

Le préfixe ./ signifie que Linux doit rechercher le fichier dans le répertoire courant. Vous pouvez aussi utiliser le chemin réel du script dans la commande, sans changer de dossier.


2. Lancer le script avec un interpréteur

La méthode la plus simple consiste à demander directement à un interpréteur de lire le fichier :

sh script.sh

Si le script est prévu pour Bash, utilisez plutôt :

bash script.sh

Avec ces commandes, le fichier est transmis directement à l’interpréteur. Il n’est donc pas nécessaire d’ajouter le droit d’exécution avant d’utiliser sh ou bash.

Quelle commande choisir ?

Méthode Commande Fonctionnement
Interpréteur sh sh script.sh Le script est lu par sh, sans droit d’exécution préalable.
Interpréteur Bash bash script.sh Le script est lu par Bash, sans droit d’exécution préalable.
Exécution directe ./script.sh Le fichier doit être exécutable et disposer d’une shebang adaptée.

Utilisez donc sh ou bash lorsque vous voulez choisir explicitement l’interpréteur. Utilisez ./script.sh lorsque le fichier doit être lancé directement comme un programme.


3. Exécuter directement le fichier avec ./

Pour lancer le script directement depuis le terminal, exécutez :

cd /chemin/du/dossier
chmod +x script.sh
./script.sh

chmod +x script.sh ajoute le droit d’exécution. La commande ./script.sh lance ensuite le fichier situé dans le répertoire courant. Cette étape de permission concerne l’exécution directe : elle n’est pas obligatoire avant un appel avec sh ou bash.

Les permissions distinguent notamment la lecture, l’écriture et l’exécution. Le fait d’être propriétaire du fichier ou d’utiliser son nom exact ne remplace donc pas nécessairement le droit d’exécution requis par ./script.sh.

Vérifier la shebang

Lors d’une exécution directe, la première ligne du fichier indique normalement l’interpréteur attendu : c’est la shebang. Elle permet au système de savoir comment traiter le script lancé avec ./script.sh.

Vérifiez que cette ligne correspond à l’interpréteur prévu par le fichier. Avec bash script.sh ou sh script.sh, c’est la commande saisie qui sélectionne l’interpréteur ; avec ./script.sh, la shebang joue ce rôle.


4. Résoudre les erreurs courantes

« Aucun fichier ou dossier de ce type »

Cette erreur signale généralement un chemin incorrect, un mauvais nom de fichier ou un répertoire courant qui ne contient pas le script. Reprenez la commande cd /chemin/du/dossier, puis vérifiez le nom exact et l’extension du fichier.

Avec l’exécution directe, écrivez ./script.sh comme une seule commande. Ne séparez pas ./ et le nom du fichier par un espace : Linux interpréterait alors les éléments différemment.

« Permission denied » ou « Permission non accordée »

Si l’erreur apparaît avec ./script.sh, appliquez à nouveau la séquence suivante :

chmod +x script.sh
./script.sh

Vérifiez que les deux commandes concernent bien le même fichier et le même emplacement. Si le script principal appelle un autre fichier, le problème peut venir de ce fichier secondaire : repérez son appel dans le script, contrôlez son chemin et vérifiez ses permissions. Selon la manière dont il est appelé, utilisez une exécution directe ou un appel explicite avec sh ou bash.

N’utilisez pas sudo par réflexe. Les privilèges administrateur ne corrigent pas un chemin erroné ou des permissions mal vérifiées : ils ne se justifient que si l’opération effectuée par le script l’exige réellement. Le guide pour passer en root sous Linux explique les différences entre sudo et su.

L’interpréteur est absent ou incorrect

Si sh, bash ou l’exécution directe signale un problème d’interpréteur, vérifiez la commande invoquée et la shebang. L’interpréteur indiqué par le fichier doit correspondre à celui attendu par son contenu et à celui utilisé dans votre environnement.

Le format du fichier semble incorrect

Lorsque le chemin, le nom et les permissions sont corrects, inspectez le contenu et le format du fichier. Des fins de ligne incompatibles ou une modification du script peuvent empêcher son interprétation correcte. Vérifiez d’abord le fichier et sa première ligne avant de le modifier. Pour modifier le script, consultez le guide qui explique comment éditer et quitter un fichier sous Linux. Pour modifier le script, consultez le guide qui explique comment éditer et quitter un fichier sous Linux.


Bonnes pratiques avant d’exécuter un fichier .sh

  • Inspectez le contenu du script avant de le lancer, surtout si sa provenance est inconnue.
  • Remplacez toujours script.sh par le nom réel du fichier.
  • Vérifiez le dossier et le chemin avant de modifier les permissions.
  • Utilisez sh ou bash pour choisir explicitement un interpréteur.
  • Utilisez chmod +x puis ./script.sh pour une exécution directe.
  • Évitez sudo lorsque le script ne nécessite pas de privilèges administrateur.

Avis d’Expert

Pour exécuter un fichier .sh, commencez par vérifier son emplacement, puis choisissez entre sh script.sh ou bash script.sh, qui appellent directement un interpréteur, et la séquence chmod +x script.sh suivie de ./script.sh, qui lance le fichier directement. En cas d’échec, vérifiez dans cet ordre le chemin, le nom, les permissions, la shebang et le format, sans ajouter sudo par défaut.

Nathan Belmont

Nathan Belmont

Je suis un expert en systèmes d’exploitation (Windows, macOS/iOS, Linux, Android) ainsi qu’en logiciels et matériel informatique. Je propose des tutoriels clairs et pratiques pour résoudre les problèmes du quotidien, des imprimantes aux smartphones.