Домашняя » как » В чем разница между Bash, Zsh и другими оболочками Linux?

    В чем разница между Bash, Zsh и другими оболочками Linux?

    Большинство дистрибутивов Linux включают оболочку bash по умолчанию, но вы также можете переключиться на другую оболочку. Zsh является особенно популярной альтернативой, и есть другие оболочки, такие как ясень, тире, рыба и тсш. Но какая разница, и почему так много?

    Что делают снаряды?

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

    Первой средой оболочки была оболочка Thompson, разработанная в Bell Labs и выпущенная в 1971 году. С тех пор среды оболочки основывались на этой концепции, добавляя множество новых функций, функциональных возможностей и улучшений скорости..

    Например, Bash предлагает завершение команд и имен файлов, расширенные функции сценариев, историю команд, настраиваемые цвета, псевдонимы команд и множество других функций, которые не были доступны еще в 1971 году, когда была выпущена первая оболочка..

    Оболочка также используется в фоновом режиме различными системными службами. В дистрибутивы Linux входит много функций, написанных в виде сценариев оболочки. Эти сценарии являются командами, а другие расширенные функции сценариев оболочки выполняются в среде оболочки..

    Оболочки, ведущие к Башу: sh, csh, tsh и ksh

    Самым выдающимся прародителем современных оболочек является оболочка Борна, также известная как «sh», которую назвали в честь ее создателя Стивена Борна, который работал в Bell & Labs в AT & T. Выпущенный в 1979 году, он стал интерпретатором команд по умолчанию в Unix из-за его поддержки подстановки команд, конвейера, переменных, проверки условий и зацикливания, а также других функций. Он не предлагал особых настроек для пользователей и не поддерживал такие современные тонкости, как псевдонимы, завершение команд и функции оболочки (хотя этот последний был в конечном итоге добавлен).

    Оболочка C, или «csh», была разработана в конце 1970-х годов Биллом Джоем из Калифорнийского университета в Беркли. Он добавил множество интерактивных элементов, с помощью которых пользователи могли управлять своими системами, таких как псевдонимы (ярлыки для длинных команд), возможности управления заданиями, история команд и многое другое. Он был смоделирован на языке программирования C, на котором была написана сама операционная система Unix. Это также означало, что пользователи оболочки Bourne должны были изучать C, чтобы они могли вводить в него команды. Кроме того, в csh было довольно много ошибок, которые должны были выковываться как пользователями, так и создателями в течение длительного периода времени. Люди в конечном итоге использовали оболочку Bourne для сценариев, потому что она лучше справлялась с неинтерактивными командами, но придерживалась оболочки C для обычного использования.

    Со временем многие люди исправляли ошибки и добавляли функции в оболочку C, кульминацией которой стала улучшенная версия csh, известная как «tcsh». Но csh по-прежнему использовался по умолчанию на компьютерах с Unix и добавил некоторые нестандартные функции. Дэвид Корн из Bell Labs работал над KornShell, или «ksh», который пытался улучшить ситуацию, будучи обратно совместимым с языком оболочки Bourne, но добавив множество функций из оболочки csh. Он был выпущен в 1983 году, но под патентованной лицензией. Это было не свободное программное обеспечение до 2000-х годов, когда оно было выпущено под различными лицензиями с открытым исходным кодом..

    Рождение Баш

    Портативный интерфейс операционной системы для Unix, или POSIX, был еще одним ответом на суетливые проприетарные реализации csh. Он успешно создал стандарт интерпретации команд (среди прочего) и в конечном итоге отразил многие функции в KornShell. В то же время проект GNU пытался создать бесплатную Unix-совместимую операционную систему. Проект GNU разработал бесплатную программную оболочку для своей свободной операционной системы и назвал ее «Bourne Again Shell», или «bash»..

    Bash был улучшен за десятилетия, прошедшие с момента его первого выпуска в 1989 году, но сегодня он по-прежнему является оболочкой по умолчанию в большинстве дистрибутивов Linux. Это также оболочка по умолчанию на MacOS от Apple, и она доступна для установки на Microsoft Windows 10.

    Новые оболочки: пепел, тире, зш и рыба

    Хотя с тех пор сообщество Linux остановилось на Bash, разработчики не прекратили создавать новые оболочки, когда Bash был впервые выпущен 28 лет назад..

    Кеннет Альмквист создал клона оболочки Борна, известного как оболочка Альмкиша, A Shell, «ясень», а иногда просто «sh». он также был POSIX-совместимым и стал оболочкой по умолчанию в BSD, другой ветви Unix. Оболочка ash более легкая, чем bash, что делает ее популярной во встроенных системах Linux. Если у вас есть рутированный телефон Android с установленным BusyBox или любое другое устройство с пакетом программного обеспечения BusyBox - он использует код из пепла.

    Debian разработал среду оболочки на основе ash и назвал ее «dash». Он разработан, чтобы быть POSIX-совместимым и легким, поэтому он быстрее, чем Bash, но не будет иметь всех своих функций. Ubuntu использует оболочку dash в качестве оболочки по умолчанию для неинтерактивных задач, ускорения сценариев оболочки и других задач, работающих в фоновом режиме. Тем не менее, Ubuntu по-прежнему использует bash для интерактивных оболочек, поэтому пользователи по-прежнему имеют полнофункциональную интерактивную среду..

    Одной из самых популярных новых оболочек является оболочка Z, или «zsh». Созданная Полом Фальстадом в 1990 году, zsh представляет собой оболочку в стиле Борна, которая содержит функции, которые вы найдете в bash, и даже больше. Например, в zsh есть проверка орфографии, возможность отслеживать входы / выходы из системы, некоторые встроенные функции программирования, такие как байт-код, поддержка научной нотации в синтаксисе, арифметика с плавающей точкой и другие функции..

    Еще одна более новая оболочка - это Friendly Interactive Shell, или «рыба», выпущенная в 2005 году. Она имеет уникальный синтаксис командной строки, который немного проще в освоении, но не является производным ни от оболочки Bourne, ни от оболочки C. Это интересная идея, но то, что вы узнаете, используя рыбу, не обязательно поможет вам использовать bash и другие оболочки, полученные из Bourne..

    Что выбрать? (и почему Zsh популярен)

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

    На встроенных системах Linux или BSD вы получите оболочку Ash. Но пепел - это оболочка на основе Bourne, и он в значительной степени совместим с bash. Любые знания об использовании bash будут перенесены на использование оболочки ash или dash, хотя некоторые расширенные функции сценариев недоступны в этой облегченной оболочке..

    Почти каждая оболочка, с которой вы столкнетесь, основана на Bourne и работает аналогично, включая zsh.

    Вот почему Zsh популярен. Эта новая оболочка совместима с bash, но включает в себя больше возможностей. Оболочка zsh предлагает встроенную коррекцию орфографии, улучшенное завершение командной строки, загружаемые модули, которые выступают в качестве плагинов для вашей оболочки, глобальные псевдонимы, которые позволяют использовать псевдонимы имен файлов или чего-либо еще в командной строке вместо просто команд, и больше поддержки тем. Это похоже на bash, но с множеством дополнительных возможностей, дополнительных функций и настраиваемых параметров, которые вы могли бы оценить, если бы вы проводили много времени в командной строке.

    Если вы знакомы с bash, вы можете переключиться на zsh без изучения другого синтаксиса - вы просто получите дополнительные функции. если вы знакомы с zsh, вы можете переключиться на bash без изучения другого синтаксиса - у вас просто не будет доступа к этим функциям.

    «Oh My ZSH» - это инструмент, который помогает вам легче включать плагины zsh и переключаться между предварительно созданными темами, быстро настраивая оболочку zsh, не тратя часы на настройку..

    Есть и другие снаряды. Например, оболочка tcsh все еще существует и является опцией. FreeBSD использует tsch в качестве корневой оболочки по умолчанию и ash в качестве интерактивной оболочки по умолчанию. Если вы регулярно пользуетесь программированием на C, для вас лучше подойдет tsch. Тем не менее, он далеко не так часто используется, как Bash или Zsh.

    Как переключаться между оболочками

    Легко переключиться на новую оболочку, чтобы попробовать ее. Просто установите оболочку из диспетчера пакетов вашего дистрибутива Linux и введите команду для запуска оболочки.

    Например, допустим, вы хотите попробовать zsh в Ubuntu. Вы должны запустить следующие команды для установки, а затем запустить его:

    sudo apt установить zsh zsh

    Вы бы тогда сидели за раковиной Zsh. Тип " выход ”В оболочке, чтобы покинуть ее и вернуться в текущую оболочку.

    Это просто временно. Всякий раз, когда вы открываете новое окно терминала или входите в систему из командной строки, вы увидите оболочку по умолчанию. Чтобы изменить оболочку, которую вы видите, когда вы входите в систему, известную как ваша оболочка входа в систему, вы обычно можете использовать CHSH , или «Изменить оболочку», команда.

    Чтобы использовать эту команду, вам сначала нужно найти полный путь к вашей оболочке с помощью команды which. Например, скажем, мы хотели перейти на оболочку zsh. Мы запустили следующую команду:

    какой зш

    В Ubuntu это говорит нам, что двоичный файл zsh хранится в / usr / bin / zsh.

    Запустите следующую команду, введите свой пароль, и вам будет предложено выбрать новую оболочку входа в систему:

    CHSH

    В соответствии с приведенной выше командой / USR / бен / ЗШ . Оболочка zsh будет нашим значением по умолчанию, пока мы не запустим CHSH команда и изменил его обратно.