Bash ou Zsh, quelle est la différence, pourquoi utiliser l'un ou l'autre? [dupliquer]

23

Donc, la question dit à peu près tout. Je suis sur Snow Leopard, et je fais beaucoup de développement web, en particulier dans Rails 3 qui fait un usage intensif de la console.

J'ai vu des blogueurs notables, etc. mentionner Zsh comme leur préférence par rapport à Bash, mais je ne sais pas quelle différence cela ferait.

Quelqu'un pourrait-il me donner une bonne comparaison de la différence qui existe et de ce qui pourrait faire que l'on préfère une option ou l'autre?

Andrew
la source
1
Si cela aide, un article de 2016: stackabuse.com/zsh-vs-bash
Cœur
Cette question est redevenue pertinente en raison du passage des pommes à zsh
amar

Réponses:

16

Ceci provient de la FAQ Zsh :

2.5: Similitudes avec bash

Le Bourne-Again Shell, bash, est un autre shell amélioré de type Bourne; le plus évident
la différence avec zsh est qu'il n'essaie pas d'émuler le shell Korn. Depuis les deux
les coquilles sont en cours de développement actif, il n'est probablement pas judicieux d'être trop précis 
ici. De manière générale, bash a accordé plus d'attention à la conformité aux normes (c.-à-d. POSIX) pour
plus longtemps, et a jusqu'à présent évité les fonctionnalités interactives les plus abstraites (programmables 
achèvement, etc.) que possède zsh.

Je les ai utilisés tous les deux, mais je préfère Bash maintenant parce que les machines sur lesquelles je travaille par défaut bash de manière cohérente. Le commentaire de conformité aux normes est important pour moi car cela signifie une cohérence entre les systèmes d'exploitation.

Zsh a de belles capacités d'auto-complétion, mais j'ai continué à trouver des cas où il ne savait pas ce que je voulais. C'était il y a plusieurs années, alors cela aurait pu s'améliorer depuis.

J'ai trouvé que l'activation de "vi-mode" ( set -o vi) dans Bash en fait un environnement de ligne de commande beaucoup plus agréable que d'habitude, donc je le fais immédiatement dans mon .bashrcfichier.

Lors de l'écriture de scripts shell, je ne programme jamais en bash ou zsh - je programme en utilisant sh ( /bin/sh), car c'est le plus petit dénominateur commun et le moins susceptible d'avoir des problèmes de compatibilité. C'est juste une vieille habitude qui m'a bien résisté.

Greg
la source
2
Une différence est que les caractères génériques se comportent différemment. Par exemple, pour trouver toutes les instances de fichiers nommés "vi", on peut utiliser bash avec la commande locate */vi. En utilisant zsh, le résultat pour la même commande est zsh: no matches found: */vi. Pour que la recherche fonctionne dans zsh, la requête de recherche doit être entourée de guillemets comme locate "*/vi".
Pro Backup
Mais vos deux exemples fonctionnent en bash.
John Stack