As distribuições Linux mais recentes incluem o bash como shell padrão, embora existam outros (sem dúvida) melhores shells disponíveis.
Estou tentando entender se isso é uma sobra histórica que ninguém quer mudar, ou existem algumas boas razões que tornam o bash a primeira escolha?
/bin/sh
, que é shell default em 'normais' Unix-es ...bash
é o melhor shell, porque eu o conheço bem e está em toda parte, faz tudo que preciso de forma concisa e relativamente fácil, é de fácil leitura e pode ser um pouco entendido pelas pessoas sem saber como criar scripts bash. O que mais você quer de um shell? Se você deseja muitos recursos de programação, está usando um shell incorretamente.Respostas:
A resposta curta é porque o linux é realmente o GNU / Linux. Somente o kernel é linux, mas a coleção básica de utilitários que fornecem o ambiente Unix é fornecida pelo GNU e o shell GNU é bash
Como eu disse, essa é a resposta curta;)
editado para adicionar mais comentários ...
Deixe-me prefixar dizendo que eu não sou historiador do Unix, então só posso responder ao IMHO
Alguns pontos, em primeiro lugar o bash é a pia da cozinha, como o emacs é para os editores.
No momento em que o bash foi lançado, não havia implementações gratuitas do ksh, o tcsh era um substituto gratuito do csh, mas Stallman tinha um discurso retórico contra o csh para programação de shell.
Como um shell interativo, o bash possuía excelente recuperação de histórico / comando, além de salvar o histórico de uma sessão para outra. Foi uma queda em substituição ao sh, bsh, ksh para programação de shell e criou um shell interativo decente.
Como uma bola de neve rolando ladeira abaixo, o bash ganhou força e tamanho.
Sim, existem dezenas de outras conchas; conchas que são mais adequadas para fins ou gostos individuais, mas para uma única festança de concha fazem um trabalho decente e têm muitos olhos nele há mais de 20 anos.
fonte
O Bash tem alguns concorrentes em potencial:
/bin/sh
. O Ash (com o que quero dizer qualquer família solta de conchas chamada ash) foi projetado para ser pequeno e rápido, sem recursos interativos (é apenas para editar scripts). O renascimento das cinzas é relativamente recente; nos anos 90, as variantes existentes careciam de muitos recursos.Além disso, o bash é o shell oficial do GNU , e os sistemas Linux são realmente o GNU / Linux : muitos dos principais programas vêm do GNU, mesmo que a parte mais conhecida, o kernel do Linux, não. Na época em que se tornou o padrão de fato, o bash era bem conhecido, tinha um status oficial e possuía um conjunto decente de recursos.
fonte
/bin/sh
, outras enviam cinzas. Por exemplo, o Ubuntu/bin/sh
tem sidodash
(o garfo de cinzas mantido pelo Debian) por um tempo. O Bash tem mais recursos, as cinzas são menores e mais rápidas. Ambos são compatíveis com POSIX (ou pelo menos suficientemente compatíveis na prática).Resposta mais simples? Porque algo "tem que ser" o padrão. O padrão mais sensato é aquele com o qual a maioria dos usuários já se sente confortável. Nesse ponto, Bash é uma boa escolha. Todo mundo tem a liberdade de escolher o melhor em seu mundo. A maioria escolherá usar o padrão se ele sempre fez o que eles precisam.
fonte
Vindo do DOS (com o doskey instalado), eu realmente senti falta do recurso de recuperar os últimos comandos simplesmente movendo o cursor para cima / para baixo. O BASH foi o primeiro shell que implementou isso no * nix.
Então provavelmente a maioria dos caras daquela geração em diante gostava de bash.
fonte
tcsh
era o primeiro shell * nix a usar as teclas de seta para navegar de um lado para o outro no histórico do shell.Todas as outras respostas são ótimas, mas do ponto de vista prático: se eu me sentar na frente de um sistema desconhecido (ou acessá-lo remotamente) e precisar fazer algo, posso contar com a disponibilidade do bash em todos os sistemas, exceto os mais antigos. Eu posso apenas ir em frente e fazer as coisas.
Como apontado em outras respostas e na sua pergunta, existem muitos outros shells (ouço muitas coisas boas sobre o zsh, mas ainda não tentei.), Mas eles variam em relação à sintaxe e, às vezes, aos comandos usados para fazer as coisas. Se eu apenas quero fazer algo, o bash é bastante complicado sem ter que me adaptar a outro shell.
Além disso, quando escrevo um script de shell que possa ser útil em geral, escrevo-o para o bash e sei que, se tiver muito cuidado para não fazer coisas dependentes do sistema, ele será executado em quase qualquer lugar.
fonte
Inércia.
O Bash passou a ser o shell gratuito mais facilmente disponível quando os sistemas Linux (GNU / Linux, se você preferir) começaram a aparecer. O fato de ser do projeto GNU não doeu.
Quanto ao motivo de ainda ser o shell padrão, nunca houve um motivo suficientemente bom para alterá-lo. Mesmo que algum outro shell seja melhor, há vantagens em ter o mesmo shell de login padrão em diferentes distribuições e seria difícil fazer com que todos (Debian, Red Hat, Suse etc.) concordem em mudar para outra coisa.
E, afinal, é apenas um padrão. Qualquer usuário pode usar
chsh
para alterar seu shell de login. Não há necessidade de alterar o padrão para todos.fonte