Potresti aver sentito parlare di Bash, la shell predefinita sulla maggior parte delle distribuzioni Linux. C'è un'altra shell preinstallata su Linux: la shell Bourne.
La shell Bourne è una delle shell più antiche ancora in uso sui moderni sistemi Linux, anche se non è così diffusa come Bash. Ecco cosa devi sapere sulla shell Bourne su Linux.
Cos'è la Bourne Shell?
La shell Bourne, spesso abbreviata in "sh", prende il nome dallo scienziato informatico britannico Stephen R. Bourne, che lo sviluppò mentre lavorava ai Bell Labs nel 1978. La shell ha sostituito la precedente Thompson Shell, scritta da uno dei creatori originali di Unix, Ken Thompson.
La shell Bourne ha debuttato con la versione 7 Unix nel 1979. Aveva caratteristiche come il controllo del flusso, le variabili e una migliore gestione delle stringhe. Queste funzionalità hanno reso più semplice l'utilizzo della shell come linguaggio di programmazione piuttosto che solo un modo per richiamare altri programmi.
Sebbene la shell Bourne sia rimasta popolare per la scrittura di script portatili su sistemi Unix, lo era sostituito per l'uso interattivo dalla shell C, KornShell, shell Bourne Again, nota anche come Bash e Z conchiglia. Queste shell offrivano funzionalità come
cronologia dei comandi e modifica della riga di comando che ha reso la vita più facile a utenti e amministratori.KornShell, Bash e Z shell (trattate più avanti) hanno sintassi influenzate dalla shell Bourne.
Linguaggi di scripting multipiattaforma più potenti con funzionalità ancora più avanzate come Perl e Python hanno anche ampiamente sostituito lo scripting della shell.
Tuttavia, la shell Bourne è ampiamente conosciuta e molti script forniti con i programmi Linux usano la sua sintassi per varie attività.
Il comportamento della conchiglia Bourne è stato codificato in lo standard POSIX, così tanti moderni sistemi simili a Unix lo implementano in qualche modo usando una shell compatibile.
Moderne alternative alla Bourne Shell
Esistono diverse alternative moderne open source alla shell Bourne originale sui sistemi Linux. Ecco alcuni dei più noti:
1. Bourne Again Shell (Bash)
Il nome Bourne Again shell (Bash) è un gioco sulla conchiglia Bourne. Questa shell è stata originariamente sviluppata come componente del sistema GNU, precedendo Linux per diversi anni.
È ampiamente compatibile con gli script originariamente scritti per la shell Bourne. Incorporava anche funzionalità come la modifica della riga di comando introdotta da KornShell.
Bash è la shell predefinita su molte distribuzioni Linux e quindi è diventata uno standard de facto a sé stante.
2. KornShell
KornShell, noto anche come ksh, è stato originariamente sviluppato da David Korn, anche lui presso i Bell Labs, negli anni '80. Basato su Bourne shell, KornShell ha introdotto alcune funzionalità aggiuntive come il controllo dei processi, gli array e la modifica della riga di comando. Quest'ultima era una caratteristica rivoluzionaria quando è apparsa per la prima volta perché era molto più semplice rispetto all'utilizzo del meccanismo storico della shell C.
Se hai bisogno di modificare nuovamente un comando precedentemente emesso, puoi usare comandi simili a Vi o Emacs per farlo.
KornShell era un'impostazione predefinita su alcuni sistemi Linux commerciali come Oracle Solaris. Poiché l'originale KornShell è stato inizialmente rilasciato da AT&T con una licenza proprietaria, alla fine è stata rilasciata una versione open source denominata pdksh.
3. Almquist/Debian Almquist Shell
La shell Almquist è stata originariamente scritta da Kenneth Almquist ed era intesa come un sostituto leggero della shell Bourne. Molti sistemi BSD lo includono come implementazione di sh.
Una versione è stata portata su Debian negli anni '90 ed è nota come Debian Almquist shell. Come suggerisce il nome, è l'implementazione di sh su sistemi Debian e Ubuntu.
4. Guscio Z
conchiglia Z, o zsh, è una delle shell più recenti, originariamente sviluppata nel 1990 da Paul Falsted. Z shell è diventata famosa per le sue funzionalità avanzate. Un buon esempio è il globbing ricorsivo o la capacità di abbinare i caratteri jolly nelle sottodirectory.
Z shell è la shell di accesso predefinita per macOS e Kali Linux.
Compatibilità Bourne Shell
Sebbene queste shell siano ampiamente compatibili con gli script originariamente scritti per la shell Bourne, ci sono modi per modificare il loro comportamento in modo che sia più simile alla shell originale.
Il modo principale per farlo è attraverso un legame simbolico. La maggior parte dei sistemi si collegherà simbolicamente /bin/sh a Bash o a un'altra shell. Quando viene richiamata in questo modo, la shell entrerà in una modalità di compatibilità con la shell Bourne.
Puoi vedere quale shell /bin/sh è legato a con il comando ls:
ls -l /bin/sh
Ora conosci la Bourne Shell
La shell Bourne è uno degli standard più antichi per lo scripting su sistemi simili a Unix. Anche se è stato sostituito da altre shell, è ancora vitale per l'esecuzione di script scritti da altri.
Bash è uno dei migliori derivati di Bourne per la codifica, in particolare per il suo approccio alle variabili. Ha alcune variabili uniche che potrebbero farti desiderare di prenderlo in considerazione per il tuo prossimo progetto.