Potresti aver sentito l'espressione "quando tutto ciò che hai è un martello, tutti i problemi sembrano chiodi". Ciò non si applica al meraviglioso mondo delle shell POSIX. Per chi non lo sapesse, una schermata nera luminosa piena di testo verde è la stessa di qualsiasi altra schermata nera luminosa piena di testo verde, ma molti amministratori di sistema sanno che la shell che scegli può cambiare ogni aspetto del modo in cui interagisci con il tuo computer.
Non è raro scoprirlo nel modo più duro, di solito sotto pressione. Una volta che si verifica l'impotenza di inserire la sintassi errata in una shell sconosciuta, tuttavia, si sviluppa rapidamente un attaccamento a quella in cui si è a proprio agio. Anche così, le shell più popolari hanno virtù che fanno sì che diversi amministratori di sistema le impostino come interfaccia predefinita . Se trascorri un po' di tempo con ciascuno di essi, potresti scoprire di sviluppare un nuovo preferito, o almeno di poterti sistemare in una shell di backup affidabile.
Ecco alcune delle shell più popolari e ciò che gli utenti amano di loro.
Ash e Dash
La shell Almquist è stata sviluppata come un clone della famosa shell Bourne (da non confondere con la Bourne Again Shell, altrimenti nota come Bash). È stato mantenuto intenzionalmente leggero, probabilmente per lo stesso motivo per cui la modifica delle righe e la cronologia erano originariamente escluse:Kenneth Almquist riteneva che le funzioni UX extra appartenessero al di fuori della shell. Decenni dopo, il guscio è ancora un guscio piccolo e di base preferito. È stato fornito con le versioni iniziali di Android ed è stata per molti anni una shell predefinita comune per l'ambiente di avvio minimo delle distribuzioni Linux.
Come con molte shell POSIX, l'uso di Ash è nominalmente familiare a chiunque sia abituato a una console. Digiti i comandi; ottieni output. Alcune delle funzionalità extra sono presenti, mentre altre mancano. Ad esempio, se sei abituato a usare le scorciatoie da tastiera in stile Emacs o Vim, le troverai notevolmente assenti da Ash. Tuttavia, puoi abilitarli (purché siano stati inclusi in fase di compilazione) con il -E
(per Emacs) o -V
(per Vim) opzione. Storia (in realtà il fc
builtin command in Ash) non è scontato, a seconda di come Ash è stato compilato. Non ci sono array e il comando integrato trap non accetta opzioni.
Dash è una shell Almquist, ed è, in effetti, un port di Ash da NetBSD a Debian Linux, e sta per Debian Almquist Shell .
La caratteristica migliore di Ash è anche la sua più grande limitazione. È una shell minimale, quindi se stai cercando la semplicità, allora questa è la shell che fa per te.
Bash
La Bourne-Again Shell (Bash) è stata creata dal progetto GNU per sostituire la shell proprietaria Bourne (che a sua volta è stata creata per sostituire la shell di Ken Thompson). Oggi, Bash è più di una semplice shell:è un linguaggio di programmazione legittimo, uno degli strumenti principali dell'amministratore di sistema pieno di risorse e quasi un'icona culturale per i non programmatori che necessitano di un'automazione rapida e sporca. Se puoi trascorrere una giornata in una shell Linux, puoi sviluppare uno script Bash per sostituirti. È semplice, diretto e sorprendentemente potente, con funzionalità che includono array, uno stack di directory, trap, analisi di sottostringhe, scorciatoie da tastiera Emacs o Vim e molto altro.
Un argomento comune contro Bash è la sua dimensione, che sul mio sistema è di circa 1 MB rispetto ai 200 KB di Ash. Un altro è la sua complessità. Bash è così ricco di funzionalità che mentre uno script scritto in POSIX puro verrà eseguito in Bash, lo stesso non è sempre vero per uno script Bash che tenta di essere eseguito in una shell POSIX pura. Sebbene Bash abbia una modalità POSIX, i suoi "bashismi" extra sono solitamente troppo attraenti per essere ignorati. La buona notizia è che Bash è open source, quindi può essere facilmente installato per eseguire uno script pieno di Bash-ismi, ma alcuni utenti si oppongono comunque in linea di principio.
Bash è una shell flessibile e potente e ha sostituito altre shell come predefinite su molti sistemi. Impara Bash e sperimenterai una shell moderna e ricca di funzionalità che mostra ogni segno di diventare sempre più amichevole mentre continua a svilupparsi.
[ Scarica ora:una guida per l'amministratore di sistema allo scripting Bash. ]
casella occupata
BusyBox è un binario multi-chiamata che combina molte utilità POSIX comuni in un unico eseguibile. In altre parole, è il binario all-in-one dell'interfaccia utente POSIX principale. Se installato dal codice sorgente, inserisce una busybox
eseguibile nella libreria del tuo sistema e dovresti collegarti ad esso durante la creazione di singoli comandi per te e i tuoi utenti. Ad esempio:
$ ln --symbolic /lib64/busybox/busybox gzip
$ gzip --help
BusyBox v1.28.1 (2020-07-13 11:42:31 NZST) multi-call binary.
Usage: gzip [-cfkdt123456789] [FILE]...
In meno di 1 MB, ottieni circa 400 comandi, inclusi ls , cd , cp , mv , grep , ps , passwd , spegnimento , printf , sed , utilità di compressione, gestione dei processi e molto altro. La maggior parte di questi comandi sono minimi rispetto ai loro equivalenti GNU, ma a seconda del caso d'uso sono probabilmente sufficienti. Allo stesso modo, la shell interattiva di Busybox è Ash, quindi soddisfa le specifiche POSIX e fornisce poco altro.
Csh o Tcsh
La shell C (csh
), e la sua successiva incarnazione, tcsh
, usa una sintassi simile a C (o C++ o Java, nel caso tu ne abbia più familiarità). Ad esempio, ecco un if
loop in Bash:
v=1
if [[ $v == 1 ]]
then
echo "verbose"
fi
Ed ecco lo stesso in Csh:
set v=1
if ($v == 1) then
echo "verbose"
endif
La differenza è sottile, ma per le persone abituate alla sintassi del C e di linguaggi simili, ci sono abbastanza piccole differenze per migliorare notevolmente la loro esperienza. Mancano anche alcuni comandi integrati. Ad esempio, non esiste un type
o hash
comandi in tcsh
e non puoi definire le tue funzioni.
Mentre csh
soffre un po' della sua età, tcsh
è un buon aggiornamento e ha la maggior parte delle stesse funzionalità di Bash, anche se di tanto in tanto con una sintassi diversa.
Pesce
La conchiglia di pesce si definisce con orgoglio "una conchiglia moderna per gli anni '90". Ha tutti i vantaggi di shell robuste come Bash e Zsh, ma con funzionalità aggiuntive come l'evidenziazione della sintassi, un fish_config
comando e molto altro. Il suo scopo è fornire un contesto aggiuntivo all'utente e un migliore sistema di gestione della configurazione rispetto a un singolo .bashrc
.
Ci sono lievi differenze nella sintassi qua e là. Ad esempio, questa è una definizione di funzione per Bash:
function sshrm() {
/usr/bin/sed -i "$1d" $HOME/.ssh/known_hosts
}
Lo stesso in Fish, tuttavia:
function sshrm
/usr/bin/sed -i "$1d" $HOME/.ssh/known_hosts
end
I fan di Fish adorano le sue semplici capacità di creazione di temi e il modo in cui imposta per impostazione predefinita una directory di file di configurazione anziché un .bashrc
file che nella migliore delle ipotesi genera altri dot-file.
Corno
La shell Korn (ksh
) è stato sviluppato da David Korn e rilasciato nel 1983. Mentre sia Bash che tcsh
sono state fornite come shell predefinite per i più diffusi sistemi POSIX, la shell Korn è rimasta in gran parte una shell "alternativa". Ma come shell alternative, ksh
ha fatto bene a se stessa e quando Microsoft ha presentato Powershell alle conferenze sulla tecnologia, ha citato la shell Korn come la sua principale influenza.
Esistono diverse versioni della shell Korn (mksh, ksh93, ksh93u+, ksh2020 e altre), ma i rami ufficiali sono mantenuti su Github di AT&T.
Per gli utenti Bash, ksh
è probabile che sembri abbastanza familiare. Leggere un tutorial sullo scripting Korn è quasi come continuare a leggere sullo scripting Bash. Puoi definire le tue funzioni, creare alias, scrivere cicli e persino opzioni di completamento a schede del programma. Le associazioni di tasti di Emacs sono abilitate per impostazione predefinita, ma puoi passare a vi
combinazioni di tasti usando -o vi
opzione all'avvio o inserendo set -o vi
nel tuo ~/.environ.ksh
file di configurazione.
Quello che manca a Kornshell, probabilmente non lo noterai immediatamente. Ad esempio, non puoi abilitare o disabilitare i comandi integrati e c'è un comando integrato chiamato whence
che fa lo stesso lavoro di which
eseguibile. Non c'è nessun typeset
comando, ma Kornshell ha array con le funzionalità di ricerca più essenziali disponibili. In altre parole, mentre ci sono piccole differenze, ksh
è facile da usare per chiunque sia abituato a Bash o Fish o Zsh.
Zsh
La Z Shell (zsh
) è una shell POSIX interattiva simile a Bourne nota per la sua abbondanza di funzionalità innovative. Gli utenti di Z Shell spesso citano le sue numerose comodità e le attribuiscono una maggiore efficienza e un'ampia personalizzazione. Quando viene lanciato per la prima volta, Zsh offre diverse opzioni di configurazione, come la dimensione della cronologia, le associazioni di tasti (Emacs o Vim) e quante funzionalità extra desideri. Ad esempio, puoi creare il cd
comando implicito consentendo a Zsh di avviare una modifica della directory quando si fornisce un percorso non eseguibile senza alcun comando. Ci sono diverse funzionalità extra e puoi impostarle o annullarle modificando il .zshrc
file di configurazione.
Ci sono alcune sottili differenze nella sintassi tra Bash e Zsh, ma pochi sono i comandi che sono spesso script, quindi le probabilità che tu debba adattare gli script sono basse. Ad esempio, per disabilitare un comando integrato in Bash:
$ enable -n cd
In Zsh, il comando è un po' più intuitivo:
$ disable cd
Per ricostruire i percorsi dei comandi memorizzati nella cache in Bash, devi cancellare quello esistente, ma in Zsh c'è un'opzione per questo:
$ hash -f
Ci sono anche piccoli vantaggi per coloro che migrano da altre conchiglie. Ad esempio, puoi usare il whence
comando in Z Shell, che sarebbe familiare agli utenti della shell Korn.
Zsh è un divertente e dinamico mix di vecchie e nuove funzionalità e ha una vivace comunità che sviluppa temi e plugin per questo. Questi sono facili da installare e aggiungono ulteriori funzionalità alla tua shell, rendendo Z Shell un contendente per la shell più flessibile disponibile.
Scegli le tue conchiglie
Come al solito con l'open source, in realtà non devi scegliere solo uno di un determinato strumento. Anche se sono un devoto utente Bash a casa, spesso per impostazione predefinita utilizzo tcsh
per abitudine al lavoro, perché molti dei copioni nell'industria degli effetti visivi sono stati scritti per C Shell. Ancora oggi, scrivo compulsivamente hook Git in tcsh
per questo motivo.
Non devi necessariamente giustificare la tua scelta di shell. Usa ciò che funziona meglio per te e il tuo team. Finché è open source, hai fatto un'ottima scelta.
[ Corso online gratuito:panoramica tecnica di Red Hat Enterprise Linux. ]