Почему существует несколько оболочек в Unix как система?

Найдите имеет встроенный, удаляют команду, если это - все, что необходимо сделать.

find . -name "*.txt" -delete

Любой .txt найденный файл будет удален с помощью команды выше.

16
29.11.2012, 14:18
5 ответов

Большинство оболочек, используемых в современных средах UNIX, предназначено для приспосабливания POSIX sh спецификации. POSIX sh получен из исходной оболочки Korn (ksh88), который в свою очередь получен из более ранней Оболочки Bourne, но POSIX sh только указывает небольшое подмножество даже функциональности ksh88. Оболочка, которая только реализует минимальное требование, пропускает много функций, требуемых для записи всех кроме самого тривиального из сценариев безопасным и разумным способом. Например, локальные переменные и массивы являются нестандартными отдельно оплачиваемыми предметами.

Поэтому первая причина состоит в том, чтобы расширить оболочку с помощью дополнительных функций. Различные оболочки принимают решение сфокусироваться на разных вещах. Например, Zsh фокусируется на усовершенствованных интерактивных функциях, в то время как ksh93 (текущая "исходная" оболочка Korn) фокусируется на мощных функциях программирования и производительности. Даже очень минимальные оболочки как Тире добавляют по крайней мере несколько нестандартных отдельно оплачиваемых предметов как локальные переменные.

Дополнительные функции редко широко совместимы, если вообще. Большая часть ksh88 featureset довольно хорошо совместима, такие как расширенный globbing синтаксис, но с нестандартными функциями, нет никаких гарантий, и необходимо действительно знать то, что Вы делаете для использования их портативным способом.

Второй причиной является наследие. Существует все еще много собственных Unixes там, которые используют древние нестандартные реализации для их/bin/sh. До недавнего времени Солярис все еще использовал Bourne в качестве их defuault и принял решение поддержать оболочку Семейной реликвии, а не обновление чего-то современного. Эти системы обычно идут с различными оболочками, которые можно переключить на, например, путем заменения переменной ПУТИ или изменения хижин в рамках отдельных сценариев.

Таким образом подводить итог. Часто по умолчанию существует несколько оболочек:

  • Для дополнительных функций, специально для контакта с непортативными отдельно оплачиваемыми предметами.
  • Обработать сценарии прежней версии, которые часто не сохраняются.
  • размер / производительность. Встроенные системы часто требуют маленьких оболочек как mksh или busybox sh.
  • Лицензирование причин. AT&T ksh была собственным программным обеспечением приблизительно до 2000 или около этого. Это в основном, что дало начало всем подобным ksh клонам, таким как Zsh и Bash.
  • Другие исторические причины. Хотя не очень популярный сегодня, были радикальные попытки перепроектирования языка, такие как scsh и es. Функция замены процесса многих оболочек первоначально прибывает из дистанционного управления (с немного другим синтаксисом), и расширение фигурной скобки от csh. Различные оболочки имеют различные комбинации в наличии таких функций, обычно с некоторыми тонкими или не так тонкие различия.
15
27.01.2020, 19:48
  • 1
    Отметьте это хотя local не POSIX или Unix, он указывается и требуется в стандарте Linux (LSB) и debian стандарт политики. Отметьте это es продолжение на rc. –  Stéphane Chazelas 29.11.2012, 23:26
  • 2
    Что теперь mksh порожденный как Оболочка Bourne Общественного достояния, которая была также записана из-за лицензирования причин. (Эти проблемы все еще остаются – лицензирование и мобильность и размер были тремя факторами, которые помогли мне убедить Google включать mksh с Android.) –  mirabilos 27.02.2014, 16:17

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

Так же... Почему там столько текстовых редакторов? Почему люди разрабатывают новый браузер, если уже существует один? Почему там GNOME, KDE, Xfce, LXDE, E17, и т.д.?

19
27.01.2020, 19:48
  • 1
    Точно. Можно было спросить "почему столько менеджеров окон?" также. Собственный компонент Unix мог бы задать противоположный вопрос: почему только один CMD.EXE? Почему Windows так тверд и не настраиваем? –  Bruce Ediger 29.11.2012, 15:05
  • 2
    @BruceEdiger, Что Вы имеете в виду, всего один cmd.exe? Существуют альтернативы ему, если Вы хотите использовать их. Даже Microsoft самостоятельно имеет PowerShell как альтернативу. –  Malcolm 30.11.2012, 00:37
  • 3
    Даже COMMAND.COM в DOS было заменимо. Однако Вы часто получали очень хрупкую систему из-за предположений о других приложениях (и других пользователях). В результате существует немного успешных альтернатив CMD.EXE. Каждый - PowerShell, который имеет инерцию Microsoft, поддерживающей его. Другой пример, странно достаточно, bash из-за достойной поддержки со стороны сообщества Cygwin, не говоря уже о людях MinGW. Что касается Менеджеров окон, Windows только имел по одному, но были несколько со временем как сама среда Windows, развитая. –  RBerteig 30.11.2012, 02:33
  • 4
    +1 для этого ответа. Я думаю вот почему, что у нас есть столько различных разнообразных разновидностей UNIX: AIX, HP-UX, Солярис, Tru64, IRIX, UnixWare, OS X, Linux, FreeBSD, NetBSD, OpenBSD..., Вы называете его! –  tonga 18.02.2014, 04:08

Короткий ответ

Из-за странной истории лицензирования, никакой единственный объект не разработал Unix. Это был общественный процесс, где и волонтеры и корпорации участвовали. Эти объекты не всегда совместно использовали все свои инструменты, таким образом, отдельные оболочки произошли. К тому времени, когда мы поняли, как счетчик, продуктивный, это, было слишком поздно для объединения всех используемых оболочек. Вместо этого работа была сделана, чтобы гарантировать, что все эти оболочки будут (теоретически) совместимы друг с другом.

Длинный ответ сложен и плотно связанный с историей самого Unix. Нет никакого способа, которым это будет держаться единственный ответ на этой странице, но это было широко (mis) зарегистрировано. Вы найдете более подробные и точные ответы путем оглядывания сети и книг, имеющих дело с историей Unix.

4
27.01.2020, 19:48

Различные оболочки существуют по тем же причинам, как различные веб-браузеры существуют: у всех есть предпочтение, и некоторые оболочки имеют исторический багаж или импульс. У каждого есть различные функции и особенности.

2
27.01.2020, 19:48

Главным образом, история...

Граница была разработана как часть (уместность) SysV Unix, в то время как BSD использовала csh... Позже, удар был разработан как альтернатива с открытым исходным кодом Оболочке Bourne (и ее улучшенные версии, как ksh). Подобная Границе оболочка была принята в стандарте POSIX. ksh совместим, и удар может быть совместимым.

Оболочки как csh и tcsh намного легче использовать в интерактивном режиме, чем исходная Оболочка Bourne (которые испытывают недостаток в завершении команды, и т.д.), но ужасны для сценариев...

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

Для портативных сценариев необходимо использовать POSIX совместимый вариант Границы и избежать расширений.

1
27.01.2020, 19:48

Теги

Похожие вопросы