Bash або Zsh, в чому різниця, навіщо використовувати те чи інше? [дублікат]


23

Отже, питання майже все це говорить. Я на Snow Leopard, і я дуже багато розробляю в Інтернеті, особливо в Rails 3, який широко використовує консоль.

Я бачив, як деякі помітні блогери і т. Д. Згадують Zsh як їх перевагу перед Bash, але я не знаю, у чому це змінило б це.

Чи може хто-небудь дати мені хороше порівняння, яка різниця є, і що може змусити одного віддати той чи інший варіант?



1
Якщо це допоможе, стаття 2016 року: stackabuse.com/zsh-vs-bash
Cœur

Це питання знову стало актуальним через перехід яблук на zsh
amar

Відповіді:


16

Це з FAQ щодо Zsh :

2.5: Схожість з bash

Раковина Борна, знову-таки, баш, - це ще одна вдосконалена оболонка Борна; найбільш очевидний
Відмінність від zsh полягає в тому, що він не намагається імітувати оболонку Корна. Оскільки обидва
оболонки знаходяться в стадії активного розвитку, мабуть, не надто специфічно 
тут. Загалом, bash приділяв більше уваги стандартам дотримання стандартів (тобто POSIX) для
довше, і поки що уникає більш чітких інтерактивних функцій (програмованих 
завершення тощо), що має zsh.

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

Zsh має прекрасні здібності до автодоповнення, але я постійно знаходив випадки, коли він не знав, чого я хочу. Це було кілька років тому, тому воно могло покращитися відтоді.

Я виявив, що включення "vi-mode" ( set -o vi) в Bash робить його набагато приємніше середовищем командного рядка, ніж зазвичай, тому я це роблю негайно у своєму .bashrcфайлі.

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


2
Одна відмінність полягає в тому, що символи підстановки поводяться по-різному. Наприклад, щоб знайти всі екземпляри файлів з назвою "vi", можна використовувати bash з командою locate */vi. Використання zsh результат для тієї ж команди є zsh: no matches found: */vi. Щоб зробити роботу пошуку в zsh, пошуковий запит повинен бути оточений цитатами locate "*/vi".
Pro Backup

Але обидва ваші приклади працюють на баш.
Джон Стек
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.