Perché bash standard su Linux?


19

Le distribuzioni Linux più recenti includono bash come shell predefinita, sebbene siano disponibili altre shell (probabilmente) migliori.

Sto cercando di capire se questo è un residuo storico che nessuno vuole cambiare, o ci sono dei buoni motivi che fanno di Bash la prima scelta?


19
La maggior parte dei computer viene venduta con MS Windows installato, sebbene siano disponibili altri sistemi operativi, probabilmente migliori.
Choroba,

Bash è semplice. Di solito può fare tutto ciò che l'utente vuole che faccia. Puoi facilmente cambiarlo. Non sarà divertente avere scsh di default.
CND

4
Bash è l'implementazione OSS dello standard UNIX /bin/sh, che è la shell predefinita sui normali UNIX-es ...
Jan Marek

Conosco questo un link wiki ma risponde alla tua domanda in profondità, che cosa ha una shell rispetto all'altra en.wikipedia.org/wiki/Unix_shell
whoami

6
Per favore, definisci (probabilmente) meglio . Penso che bashsia la shell migliore perché la conosco bene ed è ovunque, fa tutto ciò di cui ho bisogno in modo conciso e relativamente facile, è facilmente leggibile e può essere in qualche modo compresa dalla gente senza sapere come creare script bash. Cos'altro vuoi da una shell? Se vuoi molte funzionalità di programmazione, stai usando una shell in modo errato.
Nicerobot,

Risposte:


18

La risposta breve è perché Linux è davvero GNU / Linux. Solo il kernel è Linux, ma la raccolta base di utility che forniscono l'ambiente simile a Unix è fornita da GNU e la shell GNU è bash
Come ho detto, questa è la risposta breve;)

modificato per aggiungere qualche commento aggiuntivo ...
Fammi prefisso dicendo che non sono uno storico di Unix, quindi posso solo rispondere a IMHO

Alcuni punti, prima di tutto bash è il lavandino della cucina di conchiglie, come emacs è per gli editori.
Al momento del rilascio di bash non c'erano implementazioni gratuite di ksh, tcsh era un sostituto gratuito di csh, ma Stallman aveva una propensione contro csh per la programmazione della shell.
Come shell bash interattiva aveva un eccellente richiamo di cronologia / comando, insieme al salvataggio della cronologia da sessione a sessione. È stato un calo in sostituzione di sh, bsh, ksh per la programmazione della shell e creato per una shell interattiva decente.
Come una palla di neve che rotola in discesa, Bash ha acquisito slancio e dimensioni.

Sì, ci sono dozzine di altre conchiglie; conchiglie che si adattano meglio allo scopo o al gusto individuale, ma per un singolo bash conchiglia tutto intorno fa un lavoro decente e lo tiene in grande considerazione da oltre 20 anni.


Capisco. Tuttavia, la maggior parte delle distribuzioni include molti altri software non GNU. Mi sembra che bash sia usato solo perché è usato, proprio come Choroba ha commentato che Windows è un sistema operativo dominante. Tuttavia, per decenni Windows ha avuto un miglior supporto hardware (driver) che ha reso difficile il passaggio ad altri sistemi operativi. Non riesco a vedere quale caratteristica unica offre Bash per impedire agli utenti di passare?
Milano Babuškov,

+1 e buona @bdowning per la risposta breve e semplice :-)
Nikhil Mulley

2
@ MilanBabuškov Bash deve essere installato perché ci sono troppi script che usano funzionalità specifiche di bash. Una volta partiti da tale presupposto, devi giustificare ulteriori shell. Dash è stato incluso in distro come Ubuntu come parte di un piano per ridurre i tempi di avvio. Dato che bash è "abbastanza buono" come shell interattiva, nessun'altra shell ha ancora fornito un argomento abbastanza forte da far parte del caricamento del pacchetto predefinito.
ssokolow,

12

Bash ha alcuni potenziali concorrenti:

  • Zsh ha strutture interattive più avanzate, ma alcune stranezze quando si tratta di script (meno ora che ai tempi). All'inizio della metà degli anni '90, quando Linux era agli inizi, zsh era praticamente sconosciuto.
  • Ksh era lo standard di fatto per gli uffici commerciali dalla metà degli anni '80, ma era un software proprietario fino al 2000, quindi non un'opzione su Linux. Inoltre, ksh aveva capacità di edizione della riga di comando subpar, rispetto a bash.
  • Pdksh , un clone gratuito di ksh, sarebbe stato un'opzione, ma non era ben noto e aveva scarse capacità di edizione della riga di comando. (Pdksh non è più un progetto molto attivo, anche se è ancora usato in alcuni BSD, ora che ATT ksh è gratuito.)
  • Alcune distribuzioni installano una variante di cenere come /bin/sh. Ash (con il quale intendo una qualsiasi delle famiglie di shell sciolte chiamate ash) è progettato per essere piccolo e veloce, senza funzionalità interattive (è solo per la modifica degli script). Il risveglio della cenere è relativamente recente; negli anni '90 le varianti esistenti mancavano di molte funzionalità.
  • Tcsh era la shell interattiva più avanzata fino a quando non è arrivato zsh, ma è incompatibile con sh e non così buono con gli script .

Inoltre bash è la shell GNU ufficiale , ei sistemi Linux sono davvero GNU / Linux : molti dei programmi principali provengono da GNU, anche se la parte più nota, il kernel Linux, non lo è. All'epoca divenne lo standard di fatto, bash era ben noto, aveva uno status ufficiale e aveva un discreto set di funzionalità.


A quanto ho capito, lo standard POSIX specifica le funzionalità richieste per la shell Bourne, at / bin / sh, e la maggior parte delle distribuzioni Linux dipendono dagli script della shell scritti per utilizzare la shell Bourne. BASH è alla base una versione avanzata della shell Bourne e / bin / sh è in realtà un collegamento a / bin / bash, che quando eseguito viene eseguito solo con le funzionalità della shell Bourne.
bgvaughan,

@bgvaughan Alcune distribuzioni spediscono bash come /bin/sh, altre spediscono cenere. Ad esempio Ubuntu /bin/shè stato dash(il fork di ash gestito da Debian) per un po '. Bash ha più funzionalità, la cenere è più piccola e più veloce. Entrambi sono conformi a POSIX (o almeno abbastanza conformi nella pratica).
Gilles 'SO- smetti di essere malvagio' il

4

Risposta più semplice? Perché qualcosa "deve essere" il valore predefinito. L'impostazione predefinita più sensata è quella con cui la maggior parte degli utenti è già a proprio agio. Su quel punto Bash è una buona scelta. Ognuno ha la libertà di scegliere qual è la migliore, nel loro mondo. La maggior parte sceglierà di utilizzare il valore predefinito se ha sempre fatto ciò di cui aveva bisogno.


3

Venendo da DOS (con doskey installato) mi mancava davvero la funzione di richiamare gli ultimi comandi semplicemente spostando il cursore su / giù. BASH è stato IMO la prima shell che lo ha implementato su * nix.

Quindi probabilmente alla maggior parte dei ragazzi di quella generazione piaceva bash.


Pur non avendo usato un computer fino agli anni '90, ero convinto che tcshfosse la prima shell * nix a usare i tasti freccia per navigare avanti e indietro nella cronologia della shell.
Anthony G - giustizia per Monica il

1

Tutte le altre risposte sono fantastiche, ma da un punto di vista pratico: se mi siedo di fronte a un sistema sconosciuto (o accedo da remoto) e devo fare qualcosa, posso contare sul fatto che bash è disponibile su tutti tranne i sistemi più vecchi. Posso solo andare avanti e fare le cose.

Come sottolineato in altre risposte e nella tua domanda, ci sono molte altre shell (ho sentito molte cose buone su zsh, ma non l'ho provato.), Ma variano rispetto alla sintassi e talvolta ai comandi utilizzati per fare le cose. Se voglio solo fare qualcosa, bash è abbastanza complicato senza dover adattarsi a un'altra shell.

Inoltre, quando scrivo uno script di shell che potrebbe essere generalmente utile, lo scrivo per bash e so che se sto molto attento a non fare cose dipendenti dal sistema, funzionerà quasi ovunque.


1

Inerzia.

Bash era la shell gratuita più facilmente disponibile quando iniziarono ad apparire i sistemi Linux (GNU / Linux, se preferisci). Il fatto che provenga dal progetto GNU non ha fatto male.

Per quanto riguarda il motivo per cui è ancora la shell predefinita, non c'è mai stata una ragione sufficiente per cambiarla. Anche se qualche altra shell è migliore, ci sono vantaggi nell'avere la stessa shell di login predefinita su diverse distribuzioni e sarebbe difficile convincere tutti (Debian, Red Hat, Suse, ecc.) Ad accettare di passare a qualcos'altro.

E dopo tutto, è solo un valore predefinito. Qualsiasi utente può utilizzare chshper modificare la propria shell di accesso. Non è necessario modificare il valore predefinito per tutti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.