Bash или Zsh, какая разница, зачем использовать один или другой? [Дубликат]

23

Итак, вопрос в значительной степени говорит сам за себя. Я работаю на Snow Leopard и много занимаюсь веб-разработкой, особенно в Rails 3, которая интенсивно использует консоль.

Я видел, как некоторые известные блоггеры и т. Д. Упоминали Zsh как свое предпочтение Bash, но я не знаю, какая разница.

Может ли кто-нибудь дать мне хорошее сравнение того, что есть разница, и что может сделать один предпочитает тот или иной вариант?

Андрей
источник
Похожие
страницы
1
Если это поможет, статья 2016 года: stackabuse.com/zsh-vs-bash
Cœur,
Этот вопрос снова стал актуальным из-за перехода яблок на zsh
amar

Ответы:

16

Это из Zsh FAQ :

2.5: Сходства с Bash

Bourne-Again Shell, bash, является еще одной улучшенной оболочкой, похожей на Bourne; самый очевидный
отличие от zsh в том, что он не пытается эмулировать оболочку Korn. Поскольку оба
Снаряды находятся в стадии активного развития, вероятно, не имеет смысла быть слишком конкретным 
Вот. В целом, bash уделяет больше внимания соответствию стандартам (например, POSIX) для
дольше, и до сих пор избегал более сложных интерактивных функций (программируемых 
завершение и т. д.), что Zsh имеет.

Я использовал их обоих, но сейчас предпочитаю Bash, потому что машины, на которых я работаю по умолчанию, постоянно бьют. Комментарий по соответствию стандартам важен для меня, потому что это означает согласованность между операционными системами.

У Zsh хорошие способности к автозаполнению, но я продолжал находить случаи, когда он не знал, чего я хотел. Это было несколько лет назад, и с тех пор, возможно, оно улучшилось.

Я обнаружил, что включение «vi-mode» ( set -o vi) в Bash делает среду командной строки намного приятнее, чем обычно, поэтому я делаю это немедленно в своем .bashrcфайле.

При написании сценариев оболочки я никогда не программирую ни на bash, ни на zsh - я программирую, используя sh ( /bin/sh), потому что это самый низкий общий знаменатель и с наименьшей вероятностью возникнут проблемы совместимости. Это просто старая привычка, которая выдержала меня.

Greg
источник
2
Одно отличие состоит в том, что подстановочные знаки ведут себя по-разному. Например, чтобы найти все экземпляры файлов с именем "vi", можно использовать команду bash locate */vi. Использование ЗШ результат для той же самой команды есть zsh: no matches found: */vi. Чтобы поиск работал в zsh, поисковый запрос должен быть заключен в кавычки locate "*/vi".
Pro Backup
Но оба ваших примера работают в bash.
Джон Стэк