Por que o bash é padrão no Linux?

19

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?

Milan Babuškov
fonte
19
A maioria dos computadores está sendo vendida com o MS Windows instalado, embora existam outros SOs possivelmente melhores.
choroba
Bash é simples. Geralmente, ele pode fazer tudo o que o usuário deseja. Você pode trocá-lo facilmente. Não será divertido ter o scsh por padrão.
CND
4
Bash é a implementação OSS de padrão UNIX /bin/sh, que é shell default em 'normais' Unix-es ...
Jan Marek
Eu sei que este é um link wiki, mas ele responde a sua pergunta em profundidade: o que um shell tem do outro pt.wikipedia.org/wiki/Unix_shell #
whoami
6
Por favor, defina (sem dúvida) melhor . Eu acho que 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.
Nicerobot

Respostas:

18

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.

bsd
fonte
Compreendo. No entanto, a maioria das distribuições inclui muitos outros softwares não-GNU. Parece-me que o bash é usado apenas porque é usado, assim como o choroba comentado no Windows como um sistema operacional dominante. No entanto, durante décadas o Windows teve um melhor suporte de hardware (drivers), o que dificultou a troca para outro sistema operacional. Não consigo ver qual recurso exclusivo o Bash oferece para impedir que os usuários alternem?
Milan Babuškov
+1 e boa @bdowning para a resposta curta e simples :-)
Nikhil Mulley
2
O @ MilanBabuškov Bash deve ser instalado porque há muitos scripts que usam recursos específicos do bash. Depois de começar com essa suposição, você deve justificar conchas adicionais. O Dash foi incluído em distos como o Ubuntu como parte de um plano para reduzir o tempo de inicialização. Dado que o bash é "bom o suficiente" como um shell interativo, nenhum outro shell ainda forneceu um argumento suficientemente forte para fazer parte do carregamento padrão do pacote.
ssokolow
12

O Bash tem alguns concorrentes em potencial:

  • O Zsh possui instalações interativas mais avançadas, mas algumas peculiaridades quando se trata de scripts (menos agora do que antigamente). No início e meados da década de 1990, quando o Linux estava em sua infância, o zsh era praticamente desconhecido.
  • O Ksh era o padrão de fato nas unidades comerciais desde meados da década de 1980, mas era um software proprietário até 2000, portanto não é uma opção no Linux. Além disso, o ksh tinha recursos de edição de linha de comando abaixo da média, em comparação com o bash.
  • Pdksh , um clone livre do ksh, teria sido uma opção, mas não era bem conhecido e tinha recursos ruins de edição de linha de comando. (O Pdksh não é mais um projeto muito ativo, embora ainda seja usado em alguns BSDs, agora que o ATT ksh é gratuito.)
  • Algumas distribuições instalam uma variante de cinzas como /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.
  • O Tcsh era o shell interativo mais avançado até o zsh aparecer, mas é incompatível com sh e não tão bom com scripts .

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.

Gilles 'SO- parar de ser mau'
fonte
Pelo que entendi, o padrão POSIX especifica os recursos necessários para o shell Bourne, em / bin / sh, e a maioria das distribuições Linux depende de scripts de shell escritos para usar o shell Bourne. O BASH é na base uma versão aprimorada do shell Bourne, e / bin / sh é na verdade um link para / bin / bash, que quando executado é executado apenas com os recursos do shell Bourne.
bgvaughan
@bgvaughan Algumas distribuições enviam bash as /bin/sh, outras enviam cinzas. Por exemplo, o Ubuntu /bin/shtem sido dash(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).
Gilles 'SO- stop be evil'
4

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.

BentFX
fonte
3

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.

Nils
fonte
Apesar de não ter usado um computador até os anos 90, eu assumi que tcshera o primeiro shell * nix a usar as teclas de seta para navegar de um lado para o outro no histórico do shell.
Anthony G - justice para Monica
1

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.

Joe
fonte
1

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 chshpara alterar seu shell de login. Não há necessidade de alterar o padrão para todos.

Keith Thompson
fonte