Il guscio di bash ha più di 30 anni e sta ancora andando forte. Che cosa fa, da dove viene, e perché è ancora il guscio più comune sui sistemi Linux?
Cos'è un guscio?
Quando si apre una finestra del terminale e digita i comandi, qualcosa deve prendere ciò che hai digitato, capire ciò che hai intenzione, ed eseguire le attività che hai chiesto. Il software che fa questo è il guscio. Una shell è un interprete di comando. Scansiona ciò che hai digitato e sceglie i comandi, i nomi delle directory, i nomi dei file e i nomi dei programmi in modo che possa capire ciò che stai cercando di ottenere.
Le persone spesso usano le frasi "Windows terminal", "riga di comando", e "shell" in modo intercambiabile, ma sono tre cose distinte. Una finestra del terminale è una rappresentazione del software di un fisico Terminale del Teletipo . Ti dà una connessione al computer. Per fare qualsiasi cosa utile, devi essere in grado di digitare le istruzioni su una riga di comando. La riga di comando è fornita dalla shell e la finestra del terminale consente di accedere alla shell.
I conchiglie consentono anche di mettere in consegna una raccolta di comandi in un file di testo chiamato script. Tutti i comandi nello script vengono eseguiti per te ogni volta che si esegue lo script. Gli script offrono efficienza, ripetibilità e convenienza.
Il primo
Unix.
Shell è stato il
Thompson Shell.
, chiamato
SH
. Scritto da
Ken Thompson.
, chi è probabilmente il membro più chiave dei padri fondatori originali UNIX a
Bell Labs.
. Il guscio Thompson è stato utilizzato come shell di Unix predefinito fino a includere la versione Unix 6. È stata sostituita dal
Bourne Shell.
Nella versione 7 di UNIX nel 1979.
IMPARENTATO: Cos'è Unix, e perché importa?
Il bourne shell.
Il guscio di Bourne, scritto da
Stephen Bourne.
, era una sostituzione aggiornata per il guscio Thompson. È stato anche iniziato a usare lo stesso comando del guscio Thompson,
SH
, Per mantenere la compatibilità all'indietro con gli script esistenti. La compatibilità all'indietro era importante, ma le nuove funzionalità sono state incluse che fornisce molte funzionalità che usiamo ancora oggi.
Il bourne Shell era un guscio interattivo e un linguaggio di scripting. Support ha supportato l'esecuzione di attività in primo piano e di sfondo e il controllo del lavoro elementare. Sono stati aggiunti tubi e reindirizzamento, insieme a miglioramenti nei loop di movimentazione.
Il guscio ora conteneva alcuni comandi integrati, il che significa che non ha bisogno di passare tutto alle utilità esterne, rendendolo più efficiente. Il guscio Bourne ha persino sostenuto "Qui documenti" Un modo elegante per automatizzare l'invio di dati in comandi.
Il guscio di Bourne ha sollevato il bar e divenne il nuovo standard.
IMPARENTATO: Come usare "Qui documenti" in Bash su Linux
La nascita di bash
Nel 1984, quando il Progetto GNU. ha annunciato la sua intenzione di creare un clone di UNIX gratuito scritto da terra e con a Nuova licenza permissiva -Il squadra aveva bisogno di un guscio. Quando un volontario che ha lavorato su un guscio per il progetto GNU non è riuscito a consegnare nulla, Brian Fox. è stato incaricato di scrivere un clone del guscio di Bourne.
È stato soprannominato il Bourne di nuovo shell. o bash. Questo è stato in parte in omaggio a Stephen Bourne e in parte Wordplay per il gusto di farlo. Dopo il suo rilascio nel 1989, Chet Ramey. Contribuito alcune correzioni di bug a Bash. Alla fine è diventato un co-manutentore del guscio di bash. Al giorno d'oggi, è ancora il manutentore del progetto Bash.
Linus Torvalds.
, il creatore del kernel di Linux, ha detto che i primi due programmi che ha corso sul suo nuovo kernel nel 1991 erano bash e
GCC.
,
Il compilatore di GNU.
. L'abbinamento delle utility GNU con il kernel Linux era reciprocamente vantaggioso. Il sistema operativo GNU aveva bisogno di un kernel e il kernel Linux aveva bisogno di tutto il resto che costituisce un clone UNIX.
Poiché Bash è il guscio standard GNU, è diventato il guscio standard su tutte le distribuzioni GNU / Linux. Linux fiorì al punto che ora è alla base di un quantità sorprendente del mondo moderno . Anche il guscio di bash ha navigato anche quella ondata di successo.
Bash incorpora e migliora il set di funzionalità del bourne shell, ma ha anche ispirato gli altri conchiglie, come il
C shell.
(
csh.
) e il
Kornshell.
(
ksh.
). Ad esempio, l'espansione della tilde "
~
"Al valore tenuto nel
$ Home.
La variabile dell'ambiente proviene dal guscio C e dal
fc.
Comando che richiama l'editor predefinito sui comandi in
la cronologia dei comandi
viene dal Kornshell.
Bash ha introdotto i file di configurazione come i file ".bashrc" e ".bash_profile" . La modifica della riga di comando su Bash ha superato le capacità delle conchiglie precedenti. La manipolazione dei comandi eseguiti in precedenza nella cronologia dei comandi è stata una versione migliorata della funzione di "BANG Cronologia" delle shells C. L'espansione del tutore era una caratteristica che mancava dalla bourne shell che è stata implementata in bash come superset della funzionalità trovata nel guscio C. Gli array sono stati migliorati rimuovendo i loro limiti di dimensione. L'espansione dei parametri nel prompt dei comandi consente agli utenti di personalizzare il loro prompt di bash.
Il guscio di bash mira ad essere conforme al POSIX P1003.2 / ISO 9945.2 Shell e utilità standard.
IMPARENTATO: Linux Kill Commercial Unix?
Perché Bash è ancora importante
Bash non avrebbe potuto durare questo lungo 30 anni, come il guscio Linux predefinito se non è stato all'altezza del lavoro. A causa della sua lunga durata e della massima base di utenti, Bash è matura e molto stabile. Ci sono molti conchiglie alternativi disponibili, dai veterani come il guscio C e il kornshell a shell più recenti come il
Z Shell (
zsh.
)
e il
Guscio interattivo amichevole
(
pesce
). Sia la conchiglia Z che il guscio di pesce hanno alcune caratteristiche che bash non sono così come modi probabilmente migliori per ottenere alcune delle stesse cose che lo fa bash. Allora perché Bash è ancora il guscio dominante?
Fuori da tutte le macchine Linux sono mai stato chiamato ad amministrare, non ricordo uno single che non ha avuto bash come il guscio. Macchine Unix, Sì, ma scatole Linux, n. È bash ogni volta. Quella familiarità ti consente di lavorare rapidamente ed essere efficace subito. Sai già Bash, quindi non c'è curva di apprendimento. Non ottieni Hamstrung con minuscole differenze in sintassi che ti stai andando in giro nei circoli cercando di capire perché qualcosa non funziona. Il tempo trascorso a capire cosa dovrebbe essere l'incantesimo questo Shell è il tempo morto, quindi è nell'interesse del business del cliente utilizzare un conchiglio ben noto e ampiamente usato.
Usando un guscio che è o sta provando molto duramente a essere le questioni conformi a molte distribuzioni Linux, ma ciò che conta più è la compatibilità con le versioni precedenti. Apportare modifiche che potrebbero rompere gli script esistenti è ovviamente poco attraente. Attraente o no, a volte, devi solo mordere il proiettile. Il 3 settembre 1967, la Svezia ha scambiato dalla guida a sinistra per guidare sulla destra. Alle 4:50 A.M., tutto il traffico doveva fermarsi, si fa strada verso l'altro lato della strada e fermarsi ancora una volta. Alle 5:00 A.M., il traffico potrebbe procedere, con tutti ora guidando a destra.
Bash mai essere sostituito?
Ciò che potrebbe sembrare inconcepibile ora può effettivamente accadere più tardi. A meno che non vogliamo aggrapparsi alla convinzione che utilizzeremo tutti Bash finché il giorno del Dooms, la verità probabilmente è che un giorno, Bash verrà sostituita come shell di Linux predefinita, sia che sia ancora la gola standard GNU o meno. O forse sarà bash, ma migliorato ben oltre il guscio che usiamo oggi. Ma qualunque cosa prenda il posto di Bash di oggi dovrà essere completamente (o molto quasi) compatibile con il backward o vale la pena lo sconvolgimento, qualunque sia il beneficio.
Questo non è senza precedenti. Da quando Versione 10.15. di Mac OS , Apple ha lasciato cadere Bash e adottato la conchiglia Z come shell predefinita. Apple ha problemi con la GNU General Public License (GPL) V.3. Sfortunatamente, questa è la licenza che Bash usa. L'ultima versione di Bash rilasciata in GPL V.2 è stata la versione 3.2 del 2007. La versione corrente è 5.1. Apple era quasi un decennio e mezzo dietro. L'unico modo in cui Apple potrebbe includere un guscio aggiornato senza passare a GPL V.3 doveva passare in una conchiglia diversa del tutto. A Apple, vale la pena di sconvolgimento. (Tuttavia, puoi ancora Torna a Bash su MacOS Se lo preferisci!)
C'è un mondo di differenza tra la workstation di un power user e un server Linux di line-of-Business che devi somministrare a distanza su una connessione SSH . Su quasi 1,5 milioni di server ospitati Amazon EC2, Oltre il 93% è in esecuzione Linux . Quasi il 75% dei server Web stanno eseguendo linux. . Le organizzazioni come Red Hat, Amazon e Google utilizzano Linux in-house.
È difficile immaginare quali benefici potrebbero offrire un nuovo guscio che giustificherebbe quel tipo di sconvolgimento globale. Ecco perché Bash è cementato in posizione.
Anche Microsoft ora offre un modo per Esegui una shell bash basata su Linux su Windows 10 !