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?
/bin/sh
, qui est le shell par défaut sur les UNIX «normaux» ...bash
c'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.Réponses:
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.
la source
Bash a des concurrents potentiels:
/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.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.
la source
/bin/sh
, d'autres expédient ash. Par exemple, Ubuntu/bin/sh
a é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).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.
la source
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.
la source
tcsh
c'était le premier shell * nix à utiliser les touches fléchées pour naviguer dans les deux sens à travers l'historique du shell.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ù.
la source
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
chsh
pour modifier son shell de connexion. Il n'est pas nécessaire de modifier la valeur par défaut pour tout le monde.la source