LINUX.ORG.RU

[BASH] Нужна ли совместимость с BASH 3?

 


0

1

Нашёл OpenSource-программулину, которой реально могу помочь BASH-кодингом и скилами в LDAP (плюс немного Perl-кодингом, но не об этом речь). Там инсталлятор - это какой-то кошмарного вида скрипт от людей, знающих о Shell немного понаслышке. Понятно, я тут же начал его переделывать. Но мне как всегда уже не хватает нормального преобразования переменных к верхнему регистру и ассоциативных массивов - тех фич, без которых я лично уже не представляю себе BASH.
У меня есть три возможности:
- поддерживать два варианта кода для разных версий BASH
- писать код в стиле BASH 3-й версии, используя вместо ассоциативных массивов eval и tr для преобразования регистра
- забить на BASH 3 и писать только для BASH 4

А как бы вы поступили на моём месте?

P.S. Инсталлятор по дефолту всё равно требует BASH, так что никаких ограничений здесь нет, использовать испустивший дух лет 20 назад /bin/sh (т.е. реально просто bash в режиме совместимости) не нужно.

★★★★★

Последнее исправление: DRVTiny (всего исправлений: 1)

Софт с собственным установщиком идет лесом, ну или в слакварь, что впрочем одно и тоже.

sdio ★★★★★
()

вообще-то shell не испустил дух и до сих пор жив. И если ты хочешь, чтоб твоя поделка работала где-то кроме лялекса, пиши соответственно стандартам.

anonymous
()
Ответ на: комментарий от anonymous

Если в каком-либо унылом говне всё так уныло и говёно, что даже BASH не поставить,то, очевидно, это «кроме лялеха» предназначено для столь же специфически пахнущей аудитории.
Я ставил BASH на FreeBSD, на AIX, на Solaris'е кто-то уже до меня поставил. Да, я не против zsh, но его по дефолту используют только некоторые дистрибутивы Linux и ни в одном из них возможность установки BASH анально никак не заблокирована.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от sdio

>Софт с собственным установщиком идет лесом
А в пакетах preinstall и postinstall скрипты уже отменили? Там тоже не по мановению волшебной палочки всё настраивается, если, конечно, это не tar.gz в Slackware или нечто подобное. Мэйнстрим, deb и rpm, активно использует shell.

DRVTiny ★★★★★
() автор топика

мне как всегда уже не хватает нормального преобразования переменных к верхнему регистру и ассоциативных массивов

А зачем? Что ты при их помощи в инсталяторе делаешь?

adriano32 ★★★
()
Ответ на: комментарий от DRVTiny

tar.gz в slackware тоже использует установочные скрипты.

unsigned ★★★★
()

очевидно же! напиши на bash3 интерпретатор bash4

jeuta ★★★★
()

>> инсталлятор

я тут же начал его переделывать

Лучше бы ты им рассказал о пакетных менеджерах.

использовать испустивший дух лет 20 назад /bin/sh

Толсто.

GotF ★★★★★
()
Ответ на: комментарий от GotF

Не, ну конечно, я же забыл, что /bin/sh используется ещё на встроенных конфигурациях, где есть ограничения по кол.-ву памяти! А так - ну если вы мне назовёте хоть одну причину, по которой нужно использовать то, что хуже по функционалу и медленнее роботает, мне будет очень интересно что-нибудь возразить по этому поводу. А писать «Толсто» удобнее всего нажатием одной кнопочки, так что вы слишком плохо разбираетесь в автоматизации, чтобы чему-то меня учить.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

>> Не, ну конечно, я же забыл, что /bin/sh используется ещё на встроенных конфигурациях, где есть ограничения по кол.-ву памяти!

А ещё на нём принято писать все init-скрипты. И вообще все скрипты, которые могут оказаться на чужих машинах, ибо даже в этих наших линуксах bash есть не всегда.

медленнее роботает

Серьёзно? То-то разработчики Debian запилили специальный POSIX-совместимый шелл (dash) для использования в качестве /bin/sh… Bash был слишком медленным.

GotF ★★★★★
()
Ответ на: комментарий от DRVTiny

>причину, по которой нужно использовать то, что хуже по функционалу и медленнее роботает,

Насчёт медленней что-то сомневаюсь, но не в этом суть.Причина - переносимость@совместимость же.И это куда важнее красивых слов типа «функционал».Да и инсталлятор - что такое чудесное и сверхсложное он делает, что использование sh неприемлемо.+инсталлятор работает только раз.

Да, сама программа имеет в зависимостях bash?

nitz ★★
()
Ответ на: комментарий от GotF

Пруф? Как они меряли скорость выполнеения кода? BASH позволяет процентов на 30 вообще избавиться от использования вызовов внещних команд. И при этом он медленнее? Разве что по времени загрузки интерпретатора в память, потому что он, понятое дело, раза в 2-2.5 больше /bin/sh, но если писать на нём скрипты длиннее 10-ти строк, это окупится с торицей.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от GotF

>ибо даже в этих наших линуксах bash есть не всегда

Но его всегда можно установить. У меня BASH работает на телефоне, Sharp Zaurus'е, на нетбуке, разве что в наручных часах его нет - и то только потому, что я не ношу часы на руке.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

> Я ставил BASH на FreeBSD, на AIX, на Solaris'е кто-то уже до меня поставил
Вам сложно поверить - но в некоторых компаниях не разрешают на сервера ставить что попало без специальных оснований. А софт, требующий установки баша - кричит на весь офис, что его делали пионеры. С соотв. уровнем отношения

svu ★★★★★
()
Ответ на: комментарий от svu

Втопку людей, которые не понимают разницы между ОС и приложениями для ОС, а при упоминании термина «кроссплатформенность» впадают в кому.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от svu

Ну ок, мне лично нас.ать на пользователей всего, что не Linux, разработчикам программы, видимо, тоже. Имеем полное моральное право.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

Кроссплатформенность требует, кроме прочего, минимизации зависимостей от нестандартных приложений (3rd party). Баш не является стандартным приложением для юникса, в отличие от /bin/sh.

ЗЫ А настоящие пацаны в крайнем случае используют /bin/ksh, но это другая форма экстремизма, завязанная на коммерческие унихи

svu ★★★★★
()
Ответ на: комментарий от DRVTiny

Конечно же, имеете полное право. Вы - право забить болт. Остальные - право относиться к софтине как пионерской поделке. И пока вам друго от друга ничего не нужно, вы все щасливы

svu ★★★★★
()
Ответ на: комментарий от DRVTiny

>> Пруф?

Лень искать. Даже здесь была новость с активным обсуждением.

Как они меряли скорость выполнеения кода?

Не знаю.

BASH позволяет процентов на 30 вообще избавиться от использования вызовов внещних команд.

Скрипты пишутся на POSIX Shell, так что это не имеет значения. Тогда же, кстати, вычищались последние башизмы из системных скриптов :)

И при этом он медленнее?

Да, при многократных вызовах самого интерпретатора.

но если писать на нём скрипты длиннее 10-ти строк, это окупится с торицей.

Переносимости, увы, это не способствует.

GotF ★★★★★
()
Ответ на: комментарий от svu

Ага, а с какого перепугу говно-приложения на говно-недо-языке Пихтон имеют обыкновение на 1 К кода тянуть за собой 10 М зависимостей? Чем в этом плане требование к интерпретатору отличается от требования ко всему остальному . Да, и весьма крупные приложения есть на Пихтоне, но почему-то никто не кричит о том, что пихтон

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

О том, что пихтон есть не везде и его, возможно, фиг поставишь на сервер

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от svu

Кстати, уж не во FreeBSD ли совершенно корявый и убогий CSH стоит по дефолту?

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от svu

Я, например, отношусь как к пионерской поделке к тому, что написано на Python'е, Ruby и пр. подобных и тянет за собой сотни мегабайт какого-то г-на в то время, как можно было написать то же самое на C/С++ с минимумом зависимостей. Например, Privoxy написан программистами, у которых руки и голова на месте, а Redmine - пионерская поделка которая делает элементарные вещи. но даже по минимуму весит как 5 дистрибутивов TinyCore Linux.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от DRVTiny

Если приложение написано на ХХХ, то установка рантайма ХХХ на сервер рассматривается как нечто осмысленное. Хотя, кстати, и это не всегда легко проходит.
А вот если софтина бинарная, то требование ставить баш выглядит как признак непрофессионализма.

svu ★★★★★
()
Ответ на: комментарий от GotF

> Скрипты пишутся на POSIX Shell, так что это не имеет значения
+100500

окупится с торицей.

Граммарнаци таки угадал пионэра!:)

svu ★★★★★
()
Ответ на: комментарий от DRVTiny

> к тому, что написано на Python'е, Ruby
Тут всяко бывает. И пионерско и нет.

svu ★★★★★
()
Ответ на: комментарий от svu

Софтина, которая инсталлятор - не бинарная. А чем она не софтина? Остальная софтина на Perl, «который не везде, не у всех, не всегда» и т.д.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от svu

Да, я очень люблю писать раздельно то, что пишется слитно, делаю это автоматически, к сож. Но, очевидно, «торица» - это всё-таки вполне реальное слово, как и многие другие, которые сейчас употребляются лишь как составные части других слов.

DRVTiny ★★★★★
() автор топика

А может просто этот самый «инсталлятор» (раз не хочется делать нормальные дистрибутивные пакеты) перепишешь уж на Perl, раз его знаешь? Интерпретатор perl есть практически везде. Проблемы с совместимостью afaik минимальные.

kondor ★★★
()
Ответ на: комментарий от DRVTiny

> А чем она не софтина?
Тем, что не имеет потребительской ценности.

Но, очевидно, «торица» - это всё-таки вполне реальное слово

Ой ли??? С чего бы?
Происходит от др.-русск., ст.-слав. съторица. Образовано от сто.

svu ★★★★★
()
Ответ на: комментарий от kondor

Именно. Если уж Перл все равно в зависимостях

svu ★★★★★
()
Ответ на: комментарий от DRVTiny

DRVTiny> Остальная софтина на Perl, «который не везде, не у всех, не всегда» и т.д.

OMG! Инсталятор на bash'e ставит perl в систему (если его нет)?

sdio ★★★★★
()

Забей на старьё, нехай обновляются :). А вообще по обстоятельствам надо смотреть. Может это ынтырпрайз-софт для какого-нить rhel4.x. Там тогда вообще bash 2.x будет.

true_admin ★★★★★
()
Ответ на: комментарий от sdio

Инсталятор на bash'e ставит perl в систему (если его нет)?

главное чтобы спрашивало разрешения и ставила нативным способом :). Но, таки да, лучше через пакетный менеджер софт ставить.

true_admin ★★★★★
()

Автор, зачем ты спрашиваешь советов у местных экспертов, если не желаешь слушать ничьё мнение, кроме собственного?

ugoday ★★★★★
()
Ответ на: комментарий от true_admin

Да где там в RHEL, в CentOS'ях, которые подобно Debian'у протухают сразу же как только выходят (или даже выходят уже изрядно «протухшими»), вся 5.х ветка - сплошь BASH 3. Мало того, там же OpenLDAP 2.3.23, что вообще уму непостижимо: ветка 2.4 стабильна, существует уже со времён Очаковских и покоренья Крыма, так что возникает подозрение, что данный пакет в RedHat поддерживают чуть лучше, чем вообще никак, и делается это специально - чтобы народ юзал их форк проекта iPlanet или хотя бы его перманентную бэту - 389DS.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от ugoday

я всё-таки в первую очередь спрашиваю совета у тех, кто хорошо разбирается в Shell, а конкретно - в BASH.

DRVTiny ★★★★★
() автор топика
Ответ на: комментарий от svu

> +100500. Втопку людей, пишущих код только для линуха.

это, вообще-то, зависит от направленности проекта. зачем, например, какому-нибудь фронтэнду для iptables пытаться делать кроссплатформенные сервисные скрипты? чтоб на bsd или соляре их гонять?

ananas ★★★★★
()
Ответ на: комментарий от ananas

ananas> зачем, например, какому-нибудь фронтэнду для iptables пытаться делать кроссплатформенные сервисные скрипты?

посмотри на fwbuilder — frontend a-la checkpoint , a backend под разное железо и платформы.

sdio ★★★★★
()
Ответ на: комментарий от DRVTiny

Спрашивают --- это когда чего-то не знают и хотят узнать. А когда всем не согласным с твоей точкой зрения начинают что-то доказывать, это по другому называется.

ugoday ★★★★★
()
Ответ на: комментарий от ananas

Замечание принято с благодарностью.

svu ★★★★★
()
Ответ на: комментарий от sdio

> посмотри на fwbuilder

ключевые слова были - «направленность проекта»

ananas ★★★★★
()

Вариант 4. Переписать его на ash(оно же posix shell) и забыть.

Jetty ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

Ну как можно характеризовать дистрибутив в котором не могут/не хотят обновлять пакет который стал 4.0 ещё 23февраля 2009 года? Конечно очень хорошо :). Больше тухлятинки хорошой и разной.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

Ну как можно характеризовать дистрибутив в котором не могут/не хотят обновлять пакет который стал 4.0 ещё 23февраля 2009 года? Конечно очень хорошо :)

Этого не делают с одной целью - при переходе на bash 4 прийдется переписывать кучу системных скриптов. Вот тут есть обсуждение

http://lists.altlinux.org/pipermail/devel/2010-August/183713.html

Vovka-Korovka ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.