Qu'est-ce que le format de fichier SH ?
.sh est une extension de fichier shell Unix courante, utilisée par bash (Bourne-again shell) et d'autres shells compatibles POSIX. Les fichiers .sh stockent des scripts shell - des séquences de commandes et d'instructions écrites en langage shell, enregistrées en texte brut.
Les fichiers .sh sont créés dans n'importe quel éditeur de texte et sont principalement utilisés pour des scripts exécutés par une ligne de commande shell Unix. Un fichier .sh commence généralement par une ligne shebang - telle que #!/bin/sh ou #!/bin/bash - qui indique au système d'exploitation quel interpréteur invoquer. Pour exécuter un script directement, le fichier doit être rendu exécutable avec chmod +x filename.sh.
Bash est un langage de commande interprété et un shell Unix libre distribué sous licence GNU, utilisé par défaut sur de nombreux systèmes Linux et macOS. La plupart des systèmes de la famille Unix prennent en charge ce shell. Bash a remplacé le shell Bourne original, d'où son nom - Bourne-again.
Les fichiers .sh peuvent également être utilisés pour enregistrer des scripts destinés à d'autres shells, tels que Korn Shell, Z Shell, C Shell ou Bourne Shell. Sur Windows, l'automatisation équivalente est gérée par des fichiers batch ou des scripts PowerShell. Parce que .sh signale conventionnellement la compatibilité shell POSIX, les scripts ciblant un shell spécifique déclarent explicitement leur interpréteur dans la ligne shebang.
Sécurité et sûreté
RISQUE : MEDIUMUn fichier .sh est l'équivalent Unix de l'exécution de commandes arbitraires : lorsqu'il est exécuté, il peut faire tout ce que l'utilisateur peut faire - supprimer des fichiers, installer des logiciels, exfiltrer des données ou exécuter des logiciels malveillants. Le schéma notoire « curl URL | bash » exécute un script distant sans possibilité de l'inspecter. Règles de sécurité : (1) ne JAMAIS exécuter un .sh provenant d'une source non fiable sans le lire d'abord - c'est du texte brut, ouvrez-le donc dans un éditeur et vérifiez ce qu'il fait ; (2) méfiez-vous des lignes uniques obfusquées, des blocs base64 ou des scripts qui redirigent vers sudo ; (3) les scripts d'installation auto-extractibles (shar/Makeself, incluant .run) cachent une charge utile après le script - ne les exécutez que s'ils proviennent du fournisseur officiel. Un .sh n'est pas automatiquement dangereux, mais c'est du code, donc faites confiance à la source.
Détails du format
en brefProgrammes qui ouvrent les fichiers SH
Détails techniques
spécifications approfondies| Type de fichier | Script shell exécutable en texte brut |
| Type MIME | application/x-sh |
| Convention shebang | La première ligne déclare l'interpréteur : #!/bin/sh, #!/bin/bash, ou #!/usr/bin/env bash |
| Encodage des caractères | UTF-8 ou ASCII ; l'encodage doit être supporté par le shell cible |
| Fins de ligne | LF (style Unix) requis ; les fins de ligne CRLF provoquent des erreurs de syntaxe sur la plupart des shells |
| Méthode d'exécution | Invoquer avec bash script.sh, ou définir le bit d'exécution (chmod +x) et lancer directement via ./script.sh |
| Syntaxe des commentaires | Caractère # ; tout ce qui suit le # jusqu'à la fin de la ligne est ignoré par l'interpréteur |
| Assignation de variables | Aucune déclaration de type requise ; VAR=valeur (pas d'espaces autour du =) ; accès via $VAR ou ${VAR} |
| Convention de code de sortie | 0 = succès ; toute valeur non nulle = erreur ; retourné via exit N ou inspecté dans $? |
| Portabilité POSIX | Les scripts écrits selon le standard POSIX sh fonctionnent sur bash, dash, ksh et tout shell conforme |
| Drapeaux de gestion d'erreurs | set -e quitte à la première erreur ; set -u traite les variables non définies comme des erreurs ; set -o pipefail capture les échecs de tubes |
| Support plateforme | Natif sur Linux et macOS ; disponible sur Windows via WSL, Git Bash ou Cygwin |
| Interpréteur principal | Bash (GNU Bourne-Again Shell) ; également dash, ksh ou zsh selon la ligne shebang |
| Débogage de script | set -x active le mode trace, affichant chaque commande avant exécution ; bash -n vérifie la syntaxe sans exécuter |
| Publié | 1979 (Bourne shell, Unix V7); POSIX shell standardized; Bash 1989 |
| Standard ouvert | Oui · libre de droits |
| Spécification | pubs.opengroup.org |
Conversions SH
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers SH.