Pourquoi bash est-il standard sur Linux?

19

La plupart des distributions Linux récentes incluent bash comme shell par défaut, bien qu'il existe d'autres (sans doute) meilleurs shells disponibles.

J'essaie de comprendre s'il s'agit de restes historiques que personne ne veut changer, ou y a-t-il de bonnes raisons qui font de bash le premier choix?

Milan Babuškov
la source
19
La plupart des ordinateurs sont vendus avec MS Windows installé, bien qu'il existe d'autres systèmes d'exploitation, sans doute meilleurs.
choroba
Bash est simple. Il peut généralement faire tout ce que l'utilisateur souhaite qu'il fasse. Vous pouvez facilement le changer. Ce ne sera pas amusant d'avoir scsh par défaut.
Cnd
4
Bash est une implémentation OSS de la norme UNIX /bin/sh, qui est le shell par défaut sur les UNIX «normaux» ...
Jan Marek
Je sais que c'est un lien wiki mais il répond en profondeur à votre question, Qu'est-ce qu'un shell a que l'autre fr.wikipedia.org/wiki/Unix_shell
whoami
6
Veuillez définir (sans doute) mieux . Je pense que bashc'est le meilleur shell parce que je le connais bien et qu'il est partout, fait tout ce dont j'ai besoin de manière concise et relativement facilement, est facilement lisible et peut être quelque peu compris par les gens sans savoir comment créer des scripts bash. Que voulez-vous d'autre d'un shell? Si vous voulez beaucoup de fonctionnalités de programmation, vous n'utilisez pas correctement un shell.
nicerobot

Réponses:

18

La réponse courte est que linux est vraiment GNU / Linux. Seul le noyau est linux mais la collection de base des utilitaires fournissant l'environnement de type Unix est fournie par GNU et le shell GNU est bash
Comme je l'ai dit, c'est la réponse courte;)

édité pour ajouter quelques commentaires supplémentaires ...
Permettez-moi de préfixer en disant que je ne suis pas un historien Unix, donc je ne peux que répondre à mon humble avis

Quelques points, tout d'abord bash est l'évier de cuisine des coquilles, comme emacs est aux éditeurs.
Au moment où bash a été publié, il n'y avait aucune implémentation gratuite de ksh, tcsh était un remplacement gratuit de csh, mais Stallman avait une diatribe contre csh pour la programmation shell.
En tant que shell bash interactif, il y avait un excellent rappel historique / commande, ainsi que la sauvegarde de l'historique d'une session à l'autre. C'était une baisse en remplacement de sh, bsh, ksh pour la programmation shell et fait pour un shell interactif décent.
Comme une boule de neige en descente, bash a pris de l'ampleur et de la taille.

Oui, il y a des dizaines d'autres obus; des coquilles qui conviennent mieux à un usage ou à un goût individuel, mais pour un seul tout bash shell bash fait un travail décent et a beaucoup d'yeux depuis plus de 20 ans.

bsd
la source
Je comprends. Cependant, la plupart des distributions incluent de nombreux autres logiciels non GNU. Il me semble que bash est utilisé simplement parce qu'il est utilisé, tout comme le choroba a commenté que Windows était un système d'exploitation dominant. Cependant, pendant des décennies, Windows avait un meilleur support matériel (pilotes), ce qui rendait difficile le passage à un autre système d'exploitation. Je ne vois pas quelle fonctionnalité unique Bash offre pour empêcher les utilisateurs de changer?
Milan Babuškov
+1 et bon @bdowning pour la réponse courte et simple :-)
Nikhil Mulley
2
@ MilanBabuškov Bash doit être installé car il y a trop de scripts qui utilisent des fonctionnalités spécifiques à bash. Une fois que vous partez de cette hypothèse, vous devez justifier des obus supplémentaires. Dash a été inclus dans des distos comme Ubuntu dans le cadre d'un plan visant à réduire les temps de démarrage. Étant donné que bash est "assez bon" en tant que shell interactif, aucun autre shell n'a encore donné d'argument suffisamment fort pour faire partie du chargement de package par défaut.
ssokolow
12

Bash a des concurrents potentiels:

  • Zsh a des fonctionnalités interactives plus avancées, mais quelques bizarreries en ce qui concerne les scripts (moins maintenant qu'auparavant). Du début au milieu des années 1990, lorsque Linux était à ses balbutiements, zsh était pratiquement inconnu.
  • Ksh était la norme de facto sur les unités commerciales depuis le milieu des années 80, mais c'était un logiciel propriétaire jusqu'en 2000, donc pas une option sur Linux. En outre, ksh avait des capacités d'édition de ligne de commande inférieures à celles de bash.
  • Pdksh , un clone gratuit de ksh, aurait été une option, mais il n'était pas bien connu et avait de faibles capacités d'édition en ligne de commande. (Pdksh n'est plus un projet très actif, même s'il est toujours utilisé dans certains BSD, maintenant que ATT ksh est gratuit.)
  • Certaines distributions installent une variante ash comme /bin/sh. Ash (par lequel je veux dire n'importe quelle famille de coquilles appelée ash) est conçu pour être petit et rapide, sans fonctionnalités interactives (c'est uniquement pour l'édition de scripts). Le renouveau des cendres est relativement récent; dans les années 1990, les variantes existantes manquaient de beaucoup de fonctionnalités.
  • Tcsh était le shell interactif le plus avancé jusqu'à l'arrivée de zsh, mais il est incompatible avec sh et pas si bon avec les scripts .

De plus, bash est le shell GNU officiel , et les systèmes Linux sont vraiment GNU / Linux : de nombreux programmes de base proviennent de GNU, même si la partie la plus connue, le noyau Linux, ne le fait pas. Au moment où il est devenu la norme de facto, bash était bien connu, avait un statut officiel et avait un ensemble de fonctionnalités décent.

Gilles 'SO- arrête d'être méchant'
la source
Si je comprends bien, la norme POSIX spécifie les fonctionnalités requises pour le shell Bourne, at / bin / sh, et la plupart des distributions Linux dépendent de scripts shell écrits pour utiliser le shell Bourne. BASH est à la base une version améliorée du shell Bourne, et / bin / sh est en fait un lien vers / bin / bash, qui lorsqu'il est exécuté s'exécute avec uniquement les fonctionnalités du shell Bourne.
bgvaughan
@bgvaughan Certaines distributions livrent bash as /bin/sh, d'autres expédient ash. Par exemple, Ubuntu /bin/sha été dash(le fork de ash maintenu par Debian) pendant un certain temps. Bash a plus de fonctionnalités, la cendre est plus petite et plus rapide. Les deux sont conformes à POSIX (ou du moins suffisamment conformes dans la pratique).
Gilles 'SO- arrête d'être méchant'
4

Réponse la plus simple? Parce que quelque chose "doit être" par défaut. La valeur par défaut la plus raisonnable est celle avec laquelle la plupart des utilisateurs sont déjà à l'aise. Sur ce point, Bash est un bon choix. Chacun a la liberté de choisir ce qui est le mieux dans son monde. La plupart choisiront d'utiliser la valeur par défaut si elle a toujours fait ce dont ils avaient besoin.

BentFX
la source
3

Venant de DOS (avec doskey installé), j'ai vraiment manqué la fonction pour rappeler les dernières commandes en déplaçant simplement le curseur vers le haut / bas. BASH a été IMO le premier shell qui a implémenté cela sur * nix.

Donc, la plupart des gars de cette génération ont probablement aimé bash.

Nils
la source
Bien que n'ayant utilisé un ordinateur que dans les années 1990, je pensais que tcshc'était le premier shell * nix à utiliser les touches fléchées pour naviguer dans les deux sens à travers l'historique du shell.
Anthony G - justice pour Monica
1

Toutes les autres réponses sont excellentes, mais d'un point de vue pratique: si je m'assois devant un système inconnu (ou y accède à distance) et que je dois faire quelque chose, je peux compter sur bash étant disponible sur tous les systèmes sauf les plus anciens. Je peux simplement aller de l'avant et faire avancer les choses.

Comme indiqué dans d'autres réponses et dans votre question, il existe de nombreux autres shells (j'entends beaucoup de bonnes choses à propos de zsh, mais je ne l'ai pas essayé.), Mais ils varient en ce qui concerne la syntaxe et parfois les commandes utilisées pour que les choses soient faites. Si je veux juste faire quelque chose, bash est assez délicat sans avoir à s'adapter à un autre shell.

De plus, lorsque j'écris un script shell qui peut être généralement utile, je l'écris pour bash et je sais que si je fais très attention à ne pas faire de choses dépendantes du système, il fonctionnera presque n'importe où.

Joe
la source
1

Inertie.

Bash s'est avéré être le shell gratuit le plus facilement disponible lorsque les systèmes Linux (GNU / Linux, si vous préférez) ont commencé à apparaître. Le fait qu'il provienne du projet GNU n'a pas fait de mal.

Quant à savoir pourquoi c'est toujours le shell par défaut, il n'y a jamais eu de raison suffisante pour le changer. Même si un autre shell est meilleur, il y a des avantages à avoir le même shell de connexion par défaut sur différentes distributions, et il serait difficile d'amener tout le monde (Debian, Red Hat, Suse, etc.) à accepter de passer à autre chose.

Et après tout, ce n'est qu'un défaut. Tout utilisateur peut utiliser chshpour modifier son shell de connexion. Il n'est pas nécessaire de modifier la valeur par défaut pour tout le monde.

Keith Thompson
la source