Aperçu
`sh` est l'un des shells par défaut des systèmes Unix et Linux, utilisé pour l'exécution de scripts et le traitement interactif des commandes. Il adhère strictement à la norme POSIX, ce qui rend les scripts écrits pour `sh` avantageux pour maintenir une haute compatibilité sur divers systèmes.
Caractéristiques principales
- Compatibilité POSIX : Fournit une base pour l'écriture de scripts shell standard
- Exécution de scripts : Exécute une séquence de commandes stockées dans un fichier
- Interprétation de commandes interactive : Traite les commandes saisies directement par l'utilisateur
- Fourni par défaut : Préinstallé sur la plupart des systèmes Unix/Linux
Options principales
`sh` offre diverses options qui affectent la manière dont les scripts sont exécutés ou débogués.
Exécution et débogage de scripts
Commande générée :
Essayez de combiner les commandes.
Description:
`sh` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Exemples d'utilisation
Exécution d'un fichier script
sh my_script.sh
Exécute un fichier script shell spécifié en utilisant `sh`.
Exécution directe d'une chaîne de commandes
sh -c "echo 'Hello from sh!' && ls -l"
Utilise l'option `-c` pour exécuter une chaîne de commandes entre guillemets avec `sh`.
Exécution d'un script en mode débogage
sh -x debug_script.sh
Utilise l'option `-x` pour suivre le processus d'exécution du script et déboguer.
Exécution de commandes depuis l'entrée standard
echo "ls -a" | sh
Exécute des commandes transmises via un pipe avec `sh`.
Quitter immédiatement en cas d'erreur
sh -e error_prone_script.sh
Configure le script pour qu'il se termine immédiatement si une erreur se produit.
Conseils et précautions
`sh` est un outil puissant, mais il est important de comprendre ses différences avec d'autres shells.
Lors de l'écriture de scripts
- Il est recommandé de spécifier `#!/bin/sh` comme première ligne du script pour indiquer qu'il doit être exécuté par `sh`.
- Les fonctionnalités étendues d'autres shells comme `bash` ou `zsh` (par exemple, les tableaux, la correspondance de motifs avancée, les conditions `[[ ... ]]`) peuvent ne pas fonctionner avec `sh`. Utilisez donc uniquement la syntaxe compatible POSIX.
- L'option `-x` est très utile pour le débogage afin de comprendre le flux du script et de vérifier les valeurs des variables.
Compatibilité
Sur la plupart des distributions Linux, `/bin/sh` est un lien symbolique vers `dash` (pour les familles Debian/Ubuntu) ou `bash` (pour les familles Red Hat/Fedora). Par conséquent, un script `sh` s'exécute dans le mode de compatibilité POSIX du shell lié. Cela signifie qu'il peut se comporter différemment d'un script `bash`.