Perché bash è la shell predefinita nella maggior parte degli OS?

36

Perché bash è la shell predefinita nella maggior parte dei sistemi operativi (Ubuntu, Fedora, OSX, ecc.)? Perché molti utenti esperti usano per lo più zsh? Se è così buono, perché non è l'impostazione predefinita?

Io uso entrambi Non vedo differenze per tutti i miei compiti sono semplici:)

    
posta Talal 20.06.2015 - 21:52

5 risposte

32

Ho fatto qualche lettura e la conclusione sembra essere che è la shell predefinita di GNU (usata dalla maggior parte di Linux OS), e quindi viene semplicemente confezionato come parte di GNU, pur avendo dietro di sé 20 anni di sviluppo rendendolo stabile e ben arrotondato, è semplicemente il migliore tuttofare, soddisfacendo le esigenze di tutti gli utenti tranne quelli più avanzati.

Per ulteriori informazioni, leggi Perché bash standard su Linux? (la stessa domanda su Unix e Linux).

Per aggiungere un po 'di più a questo, ci sono molte altre shell da provare, se sei interessato, ecco alcuni da questa risposta :

  
  • Zsh è più avanzato   strutture interattive, ma alcuni capricci quando si tratta di scripting   (meno così ora che indietro nei giorni). Nei primi anni '90, quando   Linux era nella sua infanzia, zsh era praticamente sconosciuto.

  •   
  • Ksh è stato di fatto   standard negli uffici commerciali dalla metà degli anni '80, ma lo era   software proprietario fino al 2000, quindi non un'opzione su Linux. Inoltre, ksh   aveva le capacità di modifica della riga di comando subpar, rispetto a bash.

  •   
  • Pdksh , un clone di ksh gratuito,   sarebbe stata un'opzione, ma non era nota e povera   funzionalità di edizione da riga di comando. (Pdksh non è più molto attivo   progetto, anche se è ancora usato in alcuni BSD, ora che ATT ksh è   gratuito).

  •   
  • Alcune distribuzioni installano un    ash variante come   %codice%. Ash (con cui intendo una qualsiasi famiglia di conchiglie   chiamato ash) è progettato per essere piccolo e veloce, senza interazione   caratteristiche (è solo per gli script di modifica). Il revival della cenere è   relativamente recente; negli anni '90 le varianti esistenti mancavano molto   caratteristiche.

  •   
  • Tcsh era il più avanzato   shell interattiva fino a quando è arrivato zsh, ma è incompatibile con sh   e non così bene con   scripting .

  •   
    
risposta data Mark Kirby 20.06.2015 - 22:25
8

La shell Bourne ( sh nel corso della giornata) del ramo AT & amp; T di Unix è stata migliorata e sostituita dalla shell Korn, ksh . ksh è anche uscito da AT & amp; T Bell Labs e non era GPL (la versione corrente è Eclipse Public License). Il C-shell, csh è uscito dalla versione Berkeley di Unix e non era anche GPL (licenza BSD) e ha anche usato una sintassi diversa da sh. La shell Z, zsh è un miglioramento su sh ma non su GPL (licenza tipo MIT). Bash è stato un miglioramento su sh, ha usato la GPL e da GNU. Solo sulla licenza, Bash sarebbe stata probabilmente la scelta per un sistema operativo GPL. In particolare con un guscio che è una parte centrale di una distro.

Ma Bash è stato anche un progetto GNU, dandogli, penso, uno sviluppo più attivo e rendendo i contributi più semplici di un prodotto legacy da Berkeley Unix o AT & amp; T Unix. Un ottimo caso potrebbe essere che zsh è ed è stata una shell migliore di Bash, ma non abbastanza da superare la sua diversa licenza e lo stato di progetto non-GNU.

Indietro quando le distro di Linux apparivano per la prima volta e scegliendo la loro shell predefinita (dai primi anni '90 in poi), non c'era github (2008) o anche un SourceForge (1999). A quel punto, penso che i progetti GNU abbiano un reale vantaggio rispetto ai progetti non GNU nel farsi notare e disegnare e includere nuovi sviluppatori. Quindi le distro potrebbero guardare a Z-shell come meglio, ma si aspettano anche che Bash ottenga un buon supporto e manutenzione andando avanti, e aggiungano anche altre funzionalità, permettendogli di raggiungere zsh.

Ora che Bash ha avuto anni di status predefinito, è diventato uno standard de facto, con libri scritti su di esso. C'è un libro che copre sia Bash che Z-shell , ma nessun libro che lo copra esclusivamente, mentre ci sono molti che lo fanno per Bash.

E a questo punto, se le distro dovessero cambiare l'impostazione predefinita per gli aggiornamenti di un sistema esistente, interromperà le impostazioni in quanto alcuni file di inizializzazione hanno nomi diversi (ad esempio .bashrc contro .zshrc) e il contenuto dei file potrebbe avere sintassi incompatibile. Quindi sarebbero molto riluttanti a farlo, lasciando nuovi download per avere zsh come predefinito e aggiornamenti per avere bash. Due diversi valori di default per la stessa distro sono qualcosa che probabilmente non vogliono essere supportati e anche gli utenti / le aziende non vogliono occuparsene.

    
risposta data Scooter 21.06.2015 - 06:28
1

Le lingue della shell Unix sono tutte brutte. Alcuni in particolare ( csh ), alcuni forse un po 'meno ( ksh ? Non so in realtà), ma in realtà quando si tratta di aspetti come la leggibilità e la rigidità per i grandi progetti, nessuno di loro può avvicinarsi a linguaggi generici progettati come Python, C # o Haskell. Quindi, quando vuoi qualcosa di solido, non sceglierai mai nessuno dei sapori della shell.

Li scegli quando vuoi ottenere rapidamente cose semplici. Per questo, è necessario:

  • Sintassi concisa e coerenza sufficiente per poterla effettivamente memorizzare (è difficile cercare gli operatori di stenografia). Importa molto se la tua shell è installata ovunque, perché preferiresti davvero non memorizzare più di uno di questi mostri kludge.
  • Buone funzionalità interattive, in modo da poter accedere direttamente al terminale e far funzionare tutto senza dover passare da un file di script all'altro.
  • La possibilità di afferrare qualsiasi frammento di script da qualsiasi luogo e farlo funzionare. La compatibilità con sh è un grande vantaggio qui, e ancora una volta è più popolare, meglio è.

Così vedi, la popolarità è piuttosto un punto più grande in questi linguaggi di shell che non per le lingue generiche. Quindi anche se ksh è un po '"migliore" come linguaggio in sé, non c'è davvero tanto vantaggio nell'usarlo se bash è solo un po' più popolare (che era, nel settore pertinente, dal momento che è stato scelto come predefinito per GNU).

Le persone che fanno il passaggio sono intenzionate e hanno esperienza sufficiente per gestire facilmente il passaggio alla shell preferita. OTOH, un esordiente che è costretto a lavorare con un guscio meno popolare, verrà rapidamente confuso se chiedono qualcosa a Internet e non funziona. Quindi, qualsiasi distro che non sia solo mirata ai veterani di Unix rischia di correre un certo rischio se produce qualcosa se non bash dello standard, un passo dal quale relativamente poche persone ne trarrebbero beneficio (e solo un po ').

    
risposta data leftaroundabout 21.06.2015 - 01:49
1
  1. Era lì quando era necessario
  2. Ha abbastanza buon gusto che gli utenti iniziali possono dedicare una settimana a personalizzare il prompt.
  3. I casi di utilizzo comune sono abbastanza buoni (il più comune è l'avvio di un singolo comando)
  4. Dove non è abbastanza buono perl, python e lua possono recuperare il gioco.
  5. perl crea una terribile shell interattiva
  6. Anche se fish, ksh o zsh potrebbero teoricamente essere una shell migliore non c'è abbastanza miglioramento per me da disturbare quando perl funziona così bene o la portabilità è un problema, quindi ho scelto come target il dash.
risposta data hildred 21.06.2015 - 06:06
0

"Massa critica" è la risposta principale, IMO. Bash non è solo per il lavoro a riga di comando, è per lo scripting e c'è un enorme numero enorme di script Bash. Non importa quanto sia migliore l'alternativa per l'interazione, la necessità di essere in grado di "plug-and-play" di questi script supera di gran lunga tali vantaggi. In quanto tale, l'unica shell che può realisticamente disassociare Bash ora è completamente compatibile con le versioni precedenti e il candidato più probabile è ... la prossima versione di Bash.

    
risposta data Nagora 21.06.2015 - 00:24

Leggi altre domande sui tag