Bash o Zsh, qual è la differenza, perché usare l'uno o l'altro? [duplicare]


23

Quindi, la domanda dice praticamente tutto. Sono su Snow Leopard e faccio molto sviluppo web, in particolare in Rails 3 che fa un uso pesante della console.

Ho visto alcuni importanti blogger, ecc. Che menzionano Zsh come la loro preferenza per Bash, ma non so che differenza farebbe.

Qualcuno potrebbe darmi un buon confronto tra quale differenza c'è e cosa potrebbe fare in modo che uno preferisca un'opzione o l'altra?



1
Se questo aiuta, un articolo del 2016: stackabuse.com/zsh-vs-bash
Cœur

Questa domanda è tornata rilevante a causa del passaggio delle mele a zsh
amar,

Risposte:


16

Questo è dalle FAQ di Zsh :

2.5: Somiglianze con bash

La Bourne-Again Shell, bash, è un'altra shell Bourne migliorata; il più ovvio
la differenza da zsh è che non tenta di emulare la shell Korn. Dal momento che entrambi
le conchiglie sono in fase di sviluppo attivo, probabilmente non è sensato essere troppo specifiche 
Qui. In generale, bash ha prestato maggiore attenzione alla conformità agli standard (es. POSIX) per
più a lungo e finora ha evitato le funzionalità interattive più astruse (programmabili 
completamento, ecc.) di zsh.

Li ho usati entrambi, ma preferisco Bash adesso perché le macchine su cui lavoro di default si basano costantemente. Il commento sulla conformità agli standard è importante per me perché ciò significa coerenza tra i sistemi operativi.

Zsh ha buone capacità di completamento automatico, ma ho continuato a trovare casi in cui non sapeva cosa volevo. È successo diversi anni fa, quindi da allora potrebbe essere migliorato.

Ho scoperto che abilitare "vi-mode" ( set -o vi) in Bash lo rende un ambiente da riga di comando molto più bello di quello che è normalmente, quindi lo faccio immediatamente nel mio .bashrcfile.

Quando scrivo script di shell non programma mai in bash o zsh - programma usando sh ( /bin/sh), perché è il minimo comune denominatore e il meno probabile che abbia problemi di compatibilità. Questa è solo una vecchia abitudine che mi ha resistito bene.


2
Una differenza è che i caratteri jolly si comportano in modo diverso. Ad esempio, per trovare tutte le istanze di file denominati "vi", è possibile utilizzare bash con il comando locate */vi. Usando zsh il risultato per lo stesso comando è zsh: no matches found: */vi. Per far funzionare la ricerca in zsh, la query di ricerca deve essere racchiusa tra virgolette locate "*/vi".
Pro Backup

Ma entrambi i tuoi esempi funzionano in bash.
John Stack,
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.