Je suis très nouveau sur Ubuntu. J'entends des gens dire "shell scripting", "bash scripting".
Je me demande s'ils sont les mêmes? Ou ils sont différents?
Bash ( bash
) est l'un des nombreux shells Unix disponibles (pourtant les plus utilisés). Bash signifie " B ourne A gain SH ell", et remplace / améliore le shell Bourne original ( sh
).
Les scripts shell sont des scripts dans n'importe quel shell , alors que les scripts Bash sont des scripts spécifiques à Bash. En pratique, cependant, "script shell" et "script bash" sont souvent utilisés de manière interchangeable, à moins que le shell en question ne soit pas Bash.
EDIT: En fait, le shell de script par défaut dans Ubuntu est Dash, tandis que le shell interactif par défaut (ce que vous obtenez si vous ouvrez un terminal) est Bash. Néanmoins, les deux termes sont toujours interchangeables.
Introduction
Les scripts shell et les scripts Bash
ne sont pas la même chose, car il existe d'autres shells tels que sh
qui peuvent être utilisés pour exécuter un script; Un script destiné à être exécuté par Bash
doit être libellé comme un script Bash
. Les termes sont souvent utilisés de manière interchangeable car Bash
, avec ses fonctionnalités étendues par rapport à sh
, est le plus couramment utilisé pour exécuter des scripts utilisateur dans de nombreuses distributions. Cependant, il existe d'autres shells tels que Korn (ksh)
, C shell (csh)
et Z shell (zsh)
, mais nous ne les aborderons pas ici car une discussion de sh
et de bash
est la plus pertinente pour Ubuntu. Un excellent article IBM ici décrit plus en détail l’évolution des shells sous Linux et décrit bien l’architecture du shell et comment les shells diffèrent.
Script de shell
Sh
était le shell Unix original développé par Stephen Bourne; Cependant, les systèmes basés sur Debian et Ubuntu considèrent dash
comme leur shell sh
( sh
est en réalité lié à dash
). Dans Debian et Ubuntu, en raison de la vitesse de sh
, il est plus souvent utilisé pour les procédures système critiques et pour exécuter des scripts de clé au démarrage; pour plus de détails, consultez le wiki Ubuntu . Bash
représente le Bourne Again SHell et a été développé plus tard par Brian Fox et a largement étendu le sh
d'origine. Le développement de Fox et autres de Bash
était une partie importante du projet GNU. Voir cette grande discussion sur l'historique de Bash
pour plus d'informations.
Il est important de noter que sh
et Bash
, tels qu’utilisés dans Ubuntu et d’autres distributions, sont conformes à POSIX
, ce qui signifie qu’ils souscrivent à un certain nombre de normes sur la façon dont les commandes sont exécutées dans Shell. Cela permet de s'assurer que les résultats des scripts utilisés dans le système d'exploitation peuvent être prédits de manière fiable et que le comportement du shell peut être conservé dans ces paramètres POSIX
, ce qui est particulièrement important pour les développeurs. Pour plus d'informations sur les normes, consultez la documentation officielle .
Souvent, les scripts shell ont le suffixe .sh
, même s’ils sont destinés à être exécutés en tant que scripts bash
, et ont #!/bin/bash
en haut du script. Peu importe si le script s'appelle script.sh ou my.script , ce qui importe, c'est que l'appel à l'interpréteur soit /bin/sh
ou /bin/bash
. Les scripts shell peuvent également être appelés sur la ligne de commande avec sh
ou bash
.
Cependant, il est important de noter que les résultats peuvent être différents selon l'interpréteur appelé, car toutes les commandes bash
ne fonctionneront pas dans sh
, alors que la plupart des commandes sh
travaillera en bash
. En général, la plupart des utilisateurs voudront utiliser /bin/bash
pour leurs scripts afin de tirer parti de l'ensemble de fonctionnalités étendu. Les scripts système peuvent être exécutés avec /bin/sh
si nécessaire.
Ressources pour les scripts Bash Shell
Il est parfois difficile de trouver des ressources utiles en ligne qui suivent les bonnes pratiques et qui donnent des conseils qui vous permettront de créer des scripts utiles. Après man bash
, certaines des ressources les plus importantes sont les wiki de Greg, Les pirates informatiques de Bash et le récent livre de Steve Parker sur le script Shell qui se concentre principalement sur Bash
et est publié par O'Reilly. Une bonne introduction est également assurée par le Guide du débutant Bash .
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 29 11:53 /bin/sh -> dash*
$ ls -l /bin/dash
-rwxr-xr-x 1 root root 109768 Mar 29 11:53 /bin/dash*
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 955024 Apr 3 08:58 /bin/bash*
Cela montre que "sh" est un lien symbolique vers "dash", et que / bin / bash, qui est le shell interactif par défaut sur Ubuntu, est un exécutable presque 9 fois plus grand que /bin/sh.
En effet, 'man sh' (1590 lignes) vs 'man bash' (5459 lignes) révèle que bash est un grand sur-ensemble du 'sh' traditionnel.
En savoir plus ici:
Plusieurs shells sont disponibles pour Ubuntu, tels que bash
, zsh
, ksh
, tcsh
et csh
.
Donc, chaque fois que quelqu'un dit shell , il parle de l’un de ceux-là. Cependant, ces coquilles diffèrent un peu les unes des autres. Donc, quand quelqu'un parle de script bash
, il utilise un shell, mais quand quelqu'un parle de script shell, il n'utilise pas en soi bash
. Mais comme bash
est couramment utilisé dans les scripts pour Ubuntu, il l'est généralement. De plus, les différents coques sont les mêmes dans de nombreux aspects, donc peu importe.