The Bourne Shell ( sh retour dans la journée) de la branche AT & T d'Unix a été amélioré et supplantée par le Korn Shell, ksh . ksh est également sorti d'AT & T Bell Labs et n'était pas sous GPL (la version actuelle est Eclipse Public License). C-shell, csh est issu de la version Unix de Berkeley et n’est pas non plus une licence GPL (licence BSD) et utilise une syntaxe différente de celle de sh. Z-shell, zsh est une amélioration de sh mais pas de GPL (licence de type MIT). Bash était une amélioration de sh, utilisait la GPL et de GNU. Juste sous licence, Bash aurait probablement été le choix d’un système d’exploitation sous GPL. En particulier, une coque étant une partie essentielle d’une distribution.
Mais Bash était aussi un projet GNU, lui donnant, je pense, un développement plus actif et des contributions plus faciles qu’un produit hérité de Berkeley Unix ou d’AT & T Unix. On pourrait très bien dire que zsh est et a été un meilleur shell que Bash, mais pas assez pour vaincre sa licence différente et son statut de projet non-GNU.
À l'époque où les distributions Linux apparaissaient pour la première fois et choisissaient leur shell par défaut (du début au milieu des années 90), il n'y avait pas de github (2008) ni même de SourceForge (1999). À ce stade, je pense que les projets GNU avaient un réel avantage sur les projets non-GNU en ce qu’ils se faisaient remarquer et attiraient de nouveaux développeurs. Ainsi, les distributions pourraient sembler meilleures à Z-shell, mais elles devraient également offrir à Bash un support et une maintenance de qualité, ainsi que davantage de fonctionnalités, ce qui lui permettra de rattraper zsh.
Maintenant que Bash a un statut par défaut de plusieurs années, c'est devenu un standard de facto, avec des livres écrits à ce sujet. Il existe un livre qui couvre à la fois Bash et Z-shell , mais aucun livre ne le couvre exclusivement, alors qu'il en existe plusieurs qui le font pour Bash.
Et à ce stade, si les distributions modifiaient la valeur par défaut pour les mises à niveau d'un système existant, les configurations seraient cassées car certains fichiers d'initialisation ont des noms différents (par exemple .bashrc ou .zshrc) et le contenu des fichiers peut avoir une syntaxe incompatible. Ils seraient donc très réticents à le faire, laissant les nouveaux téléchargements utilisant zsh par défaut et les mises à niveau utilisant bash. Deux valeurs par défaut différentes pour la même distribution ne sont probablement pas souhaitables et les utilisateurs / entreprises ne veulent pas non plus gérer.
ksh
, il est également vrai que la plupart des gens utilisent un shell différent, ce qui expliquerait en soi pourquoi ceksh
n'est pas le shell par défaut. Cependant, je ne pense pas que ce soit la raison, attendons une réponse meurtrière qui, j'en suis sûr, recevra cette question.