Почему bash является оболочкой по умолчанию в большинстве операционных систем (Ubuntu, Fedora, OSX и т. Д.)? Почему многие продвинутые пользователи в основном используют zsh? Если это так хорошо, почему это не по умолчанию?
Я использую оба, я не вижу разницы, потому что все мои задачи просты :)
bash
default
zsh
history-of-ubuntu
Талал
источник
источник
ksh
, то также верно, что большинство людей используют другую оболочку, и это само по себе объясняет, почемуksh
это не оболочка по умолчанию. Однако я не думаю, что это является причиной, давайте подождем некоторого убийственного ответа, который, я уверен, этот вопрос получит.Ответы:
Я немного почитал об этом, и, похоже, я пришел к выводу, что это оболочка по умолчанию GNU (используемая большинством ОС на базе Linux), и поэтому он просто поставляется в составе GNU, а также имеет 20-летний опыт разработки. стабильный и хорошо округленный, он просто лучший среди всех, удовлетворяющий потребности всех, кроме самых продвинутых пользователей.
Для получения дополнительной информации прочитайте Почему стандарт bash в Linux? (тот же вопрос по Unix и Linux).
Просто чтобы добавить немного больше к этому, есть много других оболочек, чтобы попробовать, если вам интересно, вот несколько из этого ответа :
источник
Bourne Shell ( ш назад в день) от AT & T ветви Unix была улучшена и вытеснены в Korn Shell, KSH . ksh также вышел из AT & T Bell Labs и не был GPL (текущая версия - Eclipse Public License). C-оболочка csh вышла из версии Unix для Беркли и также не была GPL (лицензия BSD) и также использовала синтаксис, отличный от sh. Z-shell, zsh - это улучшение sh, но не GPL (MIT-подобная лицензия). Bash был улучшением sh, использовал GPL и GNU. Только на одной лицензии Bash, вероятно, был бы выбором для операционной системы GPL. Особенно с оболочкой, являющейся основной частью дистрибутива.
Но Bash был также проектом GNU, который, как мне кажется, дал ему более активную разработку и сделал вклад легче, чем унаследованный продукт из Berkeley Unix или AT & T Unix. Можно привести очень хороший пример того, что zsh является и был лучшей оболочкой, чем Bash, но этого недостаточно, чтобы преодолеть другой статус лицензии и не-GNU проекта.
В те времена, когда дистрибутивы Linux впервые появлялись и выбирали оболочку по умолчанию (с начала до середины 90-х годов), не было ни github (2008), ни даже SourceForge (1999). На данный момент, я думаю, что проекты GNU имели реальное преимущество перед проектами не-GNU в том, что их замечали и рисовали, включая новых разработчиков. Таким образом, дистрибутивы могут смотреть на Z-shell лучше, но также ожидают, что Bash получит хорошую поддержку и поддержку в будущем, а также добавит больше возможностей, что позволит ему догнать zsh.
Теперь, когда Bash имеет годы статуса по умолчанию, он стал стандартом де-факто с книгами, написанными об этом. Есть одна книга, которая охватывает как Bash, так и Z-shell , но нет книги, которая охватывает только ее, хотя есть несколько книг, которые делают это для Bash.
И в этот момент, если дистрибутивы изменят настройки по умолчанию для обновлений существующей системы, это нарушит настройки, так как некоторые файлы инициализации имеют разные имена (например, .bashrc против .zshrc), а содержимое файлов может иметь несовместимый синтаксис. Поэтому они очень неохотно делают это, оставляя новые загрузки с zsh по умолчанию и обновления с bash. Вероятно, они не хотят поддерживать два разных значения по умолчанию для одного и того же дистрибутива, и пользователи / компании также не хотят иметь с ними дело.
источник
Все языки оболочки Unix ужасны. Некоторые особенно (
csh
), некоторые, может быть, немного меньше (наksh
самом деле я не знаю), но на самом деле, когда речь идет о таких аспектах, как читаемость и жесткость для больших проектов, ни один из них не может приблизиться к хорошо разработанным языкам общего назначения, таким как Python, C # или Haskell. Таким образом, когда вы хотите что-то твердое, вы никогда не выберете какой-либо вкус оболочки.Вы выбираете их, когда хотите быстро сделать простые вещи. Для этого вам нужно:
sh
Совместимость - большой плюс, и, опять же, чем популярнее, тем лучше.Итак, вы видите, популярность в этих языках оболочки является гораздо более важной, чем для языков общего назначения. Следовательно, даже если
ksh
язык «немного лучше» сам по себе, на самом деле не так уж много преимуществ в его использовании, еслиbash
он немного более популярен (как это было в соответствующем секторе, поскольку он был впервые выбран по умолчанию). для GNU).Люди, которые действительно делают переключение, обдумывают это и достаточно опытны, чтобы легко справиться с переключением на свою любимую оболочку. OTOH, новичок, который вынужден работать с менее популярной оболочкой, будет очень запутан, если он попросит что-то в Интернете, и это не сработает. Следовательно, любой дистрибутив, нацеленный не только на ветеранов Unix, подвергается некоторому риску, если он делает что-то, кроме
bash
стандарта, шаг, от которого сравнительно мало людей выиграют (и только немного).источник
источник
«Критическая масса» - главный ответ ИМО. Bash предназначен не только для работы с командной строкой, но и для сценариев, и существует огромное количество сценариев Bash. Независимо от того, насколько лучше альтернатива для взаимодействия, необходимость иметь возможность «подключить и играть» в этих сценариях перевешивает такие преимущества. Таким образом, единственная оболочка, которая может реально отменить Bash сейчас, это полностью обратная совместимость, и наиболее вероятным кандидатом для этого является ... следующая версия Bash.
источник