Confronto di shell Unix


9

Delle principali shell Unix (bash, ksh, tcsh, zsh, altre?), Ci sono ragioni convincenti per usarne un'altra?

  • Qual è il più interattivo / adatto alla riga di comando?
  • Qual è il più favorevole / intuitivo per la scrittura di script?
  • Ci sono delle principali funzionalità integrate che una shell offre che altre no?
  • Qualcuno di questi gusci è davvero buono per un tipo di funzione, ma non per un altro? O sono tutti abbastanza arrotondati / flessibili?
  • È solo una questione di preferenze personali?

Posso creare questa wiki della community se qualcuno preferisce.

Risposte:


17

Attuale:

  • bash- Bourne di nuovo shell, shell predefinita nella maggior parte delle distribuzioni Linux. Caratteristiche decenti;
  • zsh - il più ricco di funzionalità, ma ancora usato raramente;
  • ksh - shell predefinita in Solaris, AIX e altre poche unità;
  • tcsh - shell di default in vari tipi di sapore * BSD;

Storico:

  • sh- shell Bourne originale (rilasciata nel 1977). Obsoleted da bash;
  • csh- shell C originale (rilasciata nel 1978). Obsoleted da tcsh e ksh;

Nota che bash, ksh e zsh derivano dalla sintassi sh, mentre tcsh deriva dalla sintassi csh. Queste sono due sintassi abbastanza diverse.

La tabella delle caratteristiche (wiki).


La maggior parte degli script sono generalmente scritti per essere conformi a sh, poiché l'avvio di uno script tramite sh è in genere molto più veloce di bash.
Mikeage,

Com'è quello? Su Linux / bin / sh è il link simbolico a / bin / bash.
Vartec,

2
/ bin / sh non è sempre un collegamento simbolico a / bin / bash
Brad Gilbert,

1
Quando si istanzia bash come "sh", viene eseguito in una modalità "sh" che supporta un sottoinsieme di comandi bash. Credo che la sintassi "sh" sia uno standard POSIX.
duffbeer703,

Su Debian puoi usare 'trattino' come sostituto di '/ bin / sh'.
drybjed

9

il pesce è una nuova conchiglia che è forse più interessante delle altre, non perché ha necessariamente più funzionalità, ma perché funzionano come impostazione predefinita e perché il pesce si impegna per l'usabilità.

Alcuni screenshot ( 1 , 2 , 3 , 4 ) sono sufficienti per dare l'idea generale.

fish è ora la shell predefinita sul mio Mac al lavoro. Vai a capire.


2

Se hai intenzione di imparare una shell diversa da sh/ bash, potresti anche andare avanti zsh. Non credo che nessuno contesti seriamente che sia il più potente e ricco di funzionalità delle shell alternative; se è solo gonfio è, ovviamente, ancora in discussione.

Ho sentito parlare di cose positive fish, ma non ho mai fatto lo sforzo di disturbarle.

Gli amministratori so in considerazione cshe tcshdi essere abomini che dovrebbero essere evitati a tutti i costi, e sono d'accordo con loro pur non avendo mai stato costretto a mettermi attraverso sia guscio.


2

Consiglierei di conoscere bash in quanto è uno dei più comuni (generalmente l'impostazione predefinita di Linux). Personalmente, adoro zsh come shell interattiva. Ha grandi funzionalità di completamento. Ad esempio, puoi impostare un elenco di host e quando fai qualcosa come ssh Ser [tab] saprà provare a completare automaticamente uno di questi host. Ha anche globors ricorsivi, quindi se vuoi trovare tutti i file jpeg nella sottocartella corrente e puoi usare ls -ld **/*.jpg. Ci sono molte funzioni divertenti con zsh (cerca i file .zshrc delle persone), e puoi impostarlo su 'bash compatibile', quindi è facile passare da una all'altra. Se lo combini con GNU Screen potresti scoprire che la riga di comando diventa un vero piacere lavorare con.


1

Non dimenticare l'altra domanda La shell Unix / Linux più comune: la shell più popolare è probabilmente la più popolare per un motivo ;-)

Per quello che vale, la maggior parte delle persone non passa spesso da una shell all'altra, quindi sarà difficile ottenere un confronto completo delle varie opzioni; avrai più probabilità di vedere persone diverse che sposano le virtù delle loro conchiglie preferite. Da quel poco che ho sentito parlare di diverse shell, offrono tutte alcune delle stesse funzionalità di base (come il reindirizzamento I / O, la cronologia dei comandi, ecc.), Quindi è probabile che le preferenze personali siano un componente di grandi dimensioni.


1

Un motivo convincente per usare ZSH che non è stato menzionato è la modalità vi e la modalità emacs .

Per chi ama usare la memoria muscolare vi nel guscio, questa è una caratteristica killer.

E per coloro che preferiscono emacs, puoi usare anche queste combinazioni di tasti, ma i veri credenti di emacs direbbero probabilmente che emacs è la loro shell preferita.

;-)


0

La preferenza per l'uso quotidiano è in realtà un gusto per i gusti personali, tuttavia, quando scrivo script, cerco di essere conforme posix per motivi di portabilità.


0

Proprio come Heads Up: Ubuntu imposta di default "sh" su "trattino" che in passato porta ad alcuni problemi con la compatibilità POSIX. Apparentemente, i comandi di eco differiscono leggermente.

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.