LINUX.ORG.RU

Почему Bash'ism это плохо?

 


0

3

Неоднократно слышал от людей что башизм это плохо и прочее бла-бла-бла про Bash, скажите пожалуйста, почему?

Все говрят — пиши, чтобы было «POSIX shell»-совместимо.

Окей, а как? В памяти держать все ньюасы не хочу, оно того не стоит, когда Bash установлен на 99.9% линукс-систем. Стоит ли вообще заботиться о «POSIX shell» совместимости при написании скриптов? И ради чего? Какова вероятность, что твоим скриптом воспользуется некто на каком-нибудь Dash или Ash.

Допустим, я готов начать писать «правильно», подскажите как? sh вляется симлинком на bash поэтому запустив sh и выполнив команду, которая является «башизмом», она всё равно срабатывает.

Можно ли как-то принудительно ограничить возможности Bash, чтобы он стал Ъ-POSIX shell-совместимым?

И какие подводные камни? Стоит ли ожидать, что в итоге в каком-нибудь Arch Linux сломаются системные скрипты? (лол), зачем тогда POSIX shell так пиарят красноглазики (в плохом смысле этого слова)...

★★★★★

Ответ на: комментарий от Black_Shadow

Я обожаю башизмы — сразу виден стиль и почерк настоящего линуксоида. Можно голову даже не ломать, как это всё будет работать на чистой FreeBSD — просто не стоит запускать.

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

сколько ненависти и боли в этом посте, сочувствую

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

Потому что от него не зависит ни одна из установленных программ.

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

Чтоб потом некоторые не приходили на ЛОР и не ныли: «ЫЫыыыы, мне тут дали скриииипт, а он не рабооооотает». Впрочем, желаемый уровень страданий - это личное дело каждого, вопрос в том, что ты получаешь взамен. Что лично тебе дает отсутствие баша в системе?

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

Потому что именно ba нахер не нужно, а sh и так есть. О том и тред.

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

А что дает его присутствие, чтобы его специально ставить и пинить как orphan? Надо будет сам соберется (и разберется при кутливесах), а чужие башизмы на бсде запускать.. Ну-ну.

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

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

Я, правда, всегда был убежден, что операционка - это не такая вещь в себе, которую ставят для того чтобы она была, а тупо прослойка над железом плюс некий АПИ, которая нужна сугубо с одной целью - гонять разный софт. А если мне установка сраного баша (один мегабайтный бинарник) выливается в головняк с портами, орфанами, апгрейдами и прочей бодягой (а во фре это и правда огромный головняк), то нафиг мне такая операционка нужна?

alex_the_v ★★★
()
Последнее исправление: alex_the_v (всего исправлений: 1)
Ответ на: комментарий от alex_the_v

Ты это сам придумал, у меня с портагрейдом никогда особых проблем не было, кроме брокен срезов, которые и у вас случается, а орфан/кутливес я из нравственных соображений делал, не из технических. Нравится мне, когда я знаю что мне нужно, а что зависимость. Это как авторемув или как у вас там. Может баш и вставал как билд-деп, откуда мне знать, я-то им не пользуюсь.

А «головняк» это часть роллинг соурс-баседа. Не хочешь — юзай срез пакетов. Если make config никогда не делаешь, то какая разница?

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

у вас
у вас

Это у кого «у вас»?

никогда особых проблем не было

Так в чем тогда проблема поставить баш? При чем тут «нравственные соображения»? Оно что, говорит голосами у тебя в голове и приказывает убивать?

я-то им не пользуюсь

Да и не пользуйся на здоровье, это твоя личная система и твой личный геморрой. ТС интересовался можно ли писать на баше или лучше придерживаться чистого POSIX shell. Я высказал мнение основанное на личном опыте, что можно писать на здоровье и что отсутствие в системе баша - это редкое явление, обычно (подчеркиваю: обычно, не всегда) являющееся следствием бардака в голове админа рассматриваемой системы. Что ты, собственное и подтвердил. Нравственные соображения, е-мое.

А нафига ты разлогинился, кстати?

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

s/у вас/в линуксе/; Проблемы нет примерно так же, как нет проблемы пойти поставить misc/flag, но зачем? Я за несколько лет админства никогда не юзал ба-часть баша (которую оценят только неосиляторы языков/coreutils), не праздновал его кутливинг, не логинился с 2012 года, и уже подустал от твоих скандалов-интриг-расследований. Ты валишь все мои слова в одну кучу, выискивая тебе одному ведомые несоотвествия и признаки расстройств, хотя никто даже не тыкает тебя в лужу, в кою ты присел, написав о баше в базовой системе из хандбука. Для чего это все? Ты крутой админ баша на бсди? ОК, я слил. Какой-то важный скрипт в твоей системе не может быть написан на sh? ОК, да ты просто окунул меня.

Зы: уже несколько лет юзаю баш, т.к. он дефолт на маке, пришлось поебаться и научить его в хистори-серч, в который он не может с конфигом из коробки ни на одной системе, которую я ставил. Доволен?

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

Единственный верный ответ был на первой странице, и он не твой.

anonymous
()

Неоднократно слышал от людей что башизм это плохо и прочее бла-бла-бла про Bash, скажите пожалуйста, почему?

Вангую что это были BSDуны, т.е. 1% от 1%.
Так что можешь смело забить на предъявы и спокойно писать на баше.
Только не забудь указывать #!/bin/env bash

WatchCat ★★★★★
()
Последнее исправление: WatchCat (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ладно, чувак, хватит брызгать слюнями, давай просто прекратим, ок?

alex_the_v ★★★
()

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

не слушай никого (ну разве что меня), юзай баш, пиши в начале скрипта «set -u», «set -e» и юзай shellcheck.

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

Хорошая теория :) Но, честно, хрен их знает. Мой дружище тогда отказался от этой задачи и её перепоручили его коллеге.

И всё. И ничего не произошло ни с кем. Вот такая удивительная история.

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

и сила шелл скриптов именно во всеобщей сквозной совместимости, которую bash разрушает

Чушь, ее разрушают несовместимые опции в разных coreutils. А баш всегда можно поставить. Я уже вдоволь налюбился с поддержкой деплой скриптов на linux/freebsd — теперь просто пишу их на питоне (py2/3 совместимом :).

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

Я обожаю башизмы — сразу виден стиль и почерк настоящего линуксоида. Можно голову даже не ломать, как это всё будет работать на чистой FreeBSD — просто не стоит запускать.

Ты не осилил поставить Bash на FreeBSD?

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

Так мне надо по вложенным директориям, и чтобы тэги перенеслись, и еще чтобы обложки сохранились и все такое.

// мы-то знаем, что в таких тредах первым постом идет рабочий ответ, а потом на две страницы срач про башизмы

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

Писать на шелле вообще моветон и извращение.

Для всяких мелочей типа бэкапа в самый раз.

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

А если мне установка сраного баша (один мегабайтный бинарник) выливается в головняк с портами, орфанами, апгрейдами и прочей бодягой (а во фре это и правда огромный головняк)

Жирнота. Или мусье фрю последний раз лет десять назад тыкал?

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

Ты не осилил поставить Bash на FreeBSD?

Дык, просто поставить мало — почему-то многие фанаты баша предполагают, что #!/bin/sh — обязательно симлинк на баш.

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

Жирнота. Или мусье фрю последний раз лет десять назад тыкал?

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

alex_the_v ★★★
()

Потому что не у всех bash и потому что время от времени при обновлении bash-a работавшие раньше bash-измы перестают работать.

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

Это уже не башизм, а вполне нормальный баш-скрипт, как и прописано в ши-банге. Не хуже/лучше питона, тцл и т.д.
Башизм — это когда заявляют, что «для этого скрипта, ваш /bin/sh может быть любым[позикс/sh-совместимым], при условии, что это bash»
Ваш Кэп

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

Ну, может, слегка развил его мысль

Встал из лужи, а штаны-то мокрые!

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

На «RHEL и ко» вообще rpm, что теперь, равняться на них что ли?

А что? В «Debian и ко» — dash. Остальные дистрибутивы (включая бздю) — 1% от 1%. А в Ънтерпрайзе носом вообще не воротят: на всех машинах баш установлен по дефолту, так как важнее, чтоб говноскрипты работали на не рассовая пакетная чистота.

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

Хак на то и хак что никаких гарантий как правило нет.

Стоп, башизм != хак (в моем понимании). Башизм — это использование конструкций, которые появились в баше (вот например срез строки: ${str:0:3})

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

И чего? Да, если мы безотвенно подойдем к вопросу воспитания спуфи и привьем ему все то, от чего в Ънтерпрайзе не воротят нос, то это будет былинный провал, не находишь?

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

По што ты надрываешься? Анонимус первым постом уже прояснил всё.

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

Ну эт понятно, .cshrc и у меня есть. Я про скриптовые километры autotools например имел ввиду.

Если bash нужен для сборки какого-то порта, то в команде сборки просто пишется:

portmaster -gD --delete-build-only <порт>
И всё, что ставилось только для сборки, после завершения сборки порта и его успешной установки удаляется.

iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 1)
Ответ на: комментарий от alex_the_v

Что лично тебе дает отсутствие баша в системе?

Отсутствие лишних сущностей - залог чистоты.

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

А если мне установка сраного баша (один мегабайтный бинарник) выливается в головняк с портами, орфанами, апгрейдами и прочей бодягой (а во фре это и правда огромный головняк), то нафиг мне такая операционка нужна?

А что такое «орфаны»?

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

отсутствие в системе баша - это редкое явление, обычно (подчеркиваю: обычно, не всегда) являющееся следствием бардака в голове админа рассматриваемой системы.

Дружище, тебе сколько лет, что делаешь такие глубокомысленные и всеохватные заключения? Может у вас на линуксе фанатами ядра принято пользоваться исключительно Bash. Но, пожалуйста, не надо свои правила проецировать на установки других POSIX-совместимых систем. «Со своим уставом в чужой монастырь не ходят» — слышал такое изречение? Оно выстрадано кровью «еретиков».

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

Слушай, ты мог бы потрудиться и прочитать комментарий анонимуса, на который я отвечал вот тут: https://www.linux.org.ru/forum/general/11772232/page1?lastmod=1436985662244#comment-11774633 (комментарий). Цитирую: «чтобы его специально ставить и пинить как orphan?». Я так понял, что анонимус считает orphan любой пакет, который не является зависимостью другого пакета. Ну, а русское «орфан» является простенькой транслитерацией.

Доступно?

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

Булшит. Как измерить эту «чистоту», что эта «чистота» дает и какие сущности считать лишними?

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

Дружище, тебе сколько лет, что делаешь такие глубокомысленные и всеохватные заключения?

Какая тебе разница? Тамбовский волк тебе дружище.

Может у вас на линуксе

Я еще раз спрашиваю: у кого это, «у вас»? Мне ужасно интересно знать к кому ты меня причисляешь на основании «диагноза по фотографии».

не надо свои правила проецировать

Перечисли мне какие правила куда я спроецировал. Я всего лишь сказал, что на баше можно и нужно писать, ибо баш есть практически везде. А если его нет, то скорее всего, это - следствие какого-то недоразумения, которое несложно устранить, если админ не выжил из ума.

слышал такое изречение

Давай ты мне не будешь говорить куда мне с каким уставом ходить, да? Без сопливых скользко.

Оно выстрадано кровью «еретиков».

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

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