Le script bash est-il le même que le script shell?

28

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?

    
posée batman 06.08.2012 - 07:57
la source

4 réponses

33

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.

    
réponse donnée Hilton Shumway 06.08.2012 - 08:17
la source
14

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 .

    
réponse donnée user76204 14.08.2012 - 03:40
la source
2
$ 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:

réponse donnée arielf 06.08.2012 - 08:51
la source
2

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.

    
réponse donnée fromnaboo 06.08.2012 - 08:48
la source

Lire d'autres questions sur les étiquettes