LINUX.ORG.RU

Изменение /bin/sh по умолчанию в Debian

 , ,


0

0

Luk Claes внес в Debian'овский пакет dash важное изменение: начиная с версии 0.5.5.1-2.2, символическая ссылка /bin/sh указывает по умолчанию именно на dash. Как следствие, теперь dash является пакетом "обязательного" приоритета. Возможность выбора других вариантов для /bin/sh (например, bash) реализована через dpkg-divert. Преимущество dash - более быстрое исполнение скриптов.

Изменение затронуло только неинтерактивный интерпретатор для скриптов, начинающихся со строки "#!/bin/sh". Интерактивным интерпретатором командной строки для пользователей по умолчанию остается /bin/bash.

>>> Подробности

★★★★★

Проверено: boombick ()

Модераторы, исправьте, пожалуйста, опечатку: должно быть "Luk Claes".

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

>>а (init) скрипты они допилили чтобы выполнялись с dash без проблем?

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

gotf
()

у меня уже год /bin/sh на сиде ссылается на dash

ручками переделал символическую ссылку

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

swar0g ★★★★
()

у меня вот такой вариант


GNU bash, version 4.0.24(1)-release

$ file sh
sh: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped

$ ldd sh
not a dynamic executable

$ ls -l sh
-r-xr-xr-x 1 root root 515848 Jul 1 07:32 sh

RSS footprint 400-600 kb всего лишь

при этом bash достаточно полноценный bash , со всеми возможностями, за исключением multibyte chars, секрет в diet libc, очень компактно можно собирать отдельные вещи

навряд ли dash будет более компактен ) с Glibc-ом то в памяти )

Sylvia ★★★★★
()

фу на мыло, мну расстроен

erfea ★★★★★
()

У меня этот dash спотыкался на запуске интернетов, посему поменял назад на bash.

xetf ★★
()

>>Преимущество dash - более быстрое исполнение скриптов

Кстати, с каких пор Debian озабочен скоростью загрузки? Пускай убунтоиды этим заморачиваются.

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

> с каких пор Debian озабочен скоростью загрузки?

С тех пор, как включили в дистр пакет insserv, наверное.

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

>Кстати, с каких пор Debian озабочен скоростью загрузки? Пускай убунтоиды этим заморачиваются.

С каких это пор скрипты запускаются только при загрузке?

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

>Это изменение было запланировано, когда Убунты ещё не было.

То есть столько лет они его обсуждали? лол.

Dudraug ★★★★★
()

Хорошая новость. Башу интерактивный режим, скриптам даш.

oc
()

Ещё одним преимуществом dash является несколько меньшее потребление памяти.

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

Да, действительно. Впрочем, те кому это важно, в состоянии перенаправить одну ссылку :)

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

>>Это изменение было запланировано, когда Убунты ещё не было.

>То есть столько лет они его обсуждали? лол.


Обсуждали. А ещё правили башизмы.

JackYF ★★★★
()

Да, кстати. Изменения в пакет внёс Raphael Geissert, если быть точным. Он же проделал большой объём работы по искоренению башизмов.

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

>>искоренению башизмов

Вот это куда более важно, чем смена неинтерактивного шелла.

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

> Это изменение было запланировано, когда Убунты ещё не было.

Такими быстрыми темпами строится debian?

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

Немаловажно то, что dash заставит скрипты быть поближе к POSIX. В этой плоскости количество хаоса уменьшится.

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

А это единственное преимущество дэша вроде: за счет уменьшенного количества функциональности в нем, он запускается чуть-чуть быстрее, и это становится отчетливо заметным, когда его надо запускать немерянное количество раз. Единственный use-case - init-скрипты.

З.Ы. Вместо того чтобы делать новый шелл, лучше бы разработчики дэша делали новый инит, а шелл оставили в покое.

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

Инит без использования шелловских скриптов сделать все равно не реально. Значит правильный путь -- сделать нормальный шелл.

adv
()

Осталось только сменить интерактивный интерпретатор для пользователей на ZSH и окончательно избавиться от застарелого г-на в виде баша.

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

Как язык программирования shell слишком примитивен, его давно пора заменить на что-то более вменяемое. Реально можно использовать только скаляры и некое подобие списков в конструкциях типа for ... in ... Нет стандартного синтаксиса для массивов (у всех шеллов он разный), хэшей вообще нет. Условные конструкции типа if [ ... ], где [ -- символическая ссылка на внешнюю программу test -- вообще полный идиотизм. Логичнее было бы реализовать ее функции внутри интерпретатора.

Лично мне хотелось бы использовать в качестве общепринятого шелла язык уровня Perl 5 (без излишнего синтаксического произвола) или Python. Но к сожалению, скрижали POSIX заставляют пользоваться тем примитивным говном, которое мы имеем сейчас.

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

> dash = Debian Almquist shell

Я как бы в курсе, но насколько я помню, именно в Убунте впервые сделали, что /bin/sh указывает на dash.

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

Пардон, [ -- это в bash внешняя программа, а в zsh -- встроенная.

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

> Лично мне хотелось бы использовать в качестве общепринятого шелла язык уровня Perl 5 (без излишнего синтаксического произвола) или Python. Но к сожалению, скрижали POSIX заставляют пользоваться тем примитивным говном, которое мы имеем сейчас.

В 95% случаев шелла более, чем достаточно. Там, где не достаточно - вполне можно писать #!/usr/bin/python или #!/usr/bin/perl . Не вижу никаких проблем.

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

95% каких случаев? Когда я работал администратором сети, мне постоянно не хватало shell и приходилось всю автоматизацию делать на Perl. На shell можно сделать только совсем простые вещи.

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

Во-первых, вполне реально, а во-вторых, скорость старта системы от скорости запуска интерпретатора зависит не так сильно как от работы инита. В дебе до сих пор нет асинхронного старта и зависимостей сервисов, и до сих пор нельзя через скрипт проверить статус сервиса (ps вариант). А ведь все это в Gentoo сто лет как из коробки (если к Gentoo это вообще применимо :), поставить одно yes в rc )

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

Меня вот вопрос мучает: нужен ли, при таком обилии скриптовых языков, как сейчас, неинтерактивный шелл вобще или же это уже пережиток прошлого?

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

>навряд ли dash будет более компактен ) с Glibc-ом то в памяти )

gnu libc в памяти один раз на все программы её использующие. Так что размер её не сильно важен. Номальные люди используют линковку во время запуска.

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

> Как язык программирования shell слишком примитивен, его давно пора заменить на что-то более вменяемое.

+100

rmammoth
()

Где-то читал, что из-за /bin/sh -> /bin/dash в убунте падает пересборка ядра. Ну убунтоводам оно в целом и не нужно, а вот в дебиане это будет действительно неудобно.

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

> Ну убунтоводам оно в целом и не нужно, а вот в дебиане это будет действительно неудобно.

И до следующего стабильного Дебиана наверняка починят.

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

> Поддались влиянию Убунты?

убунта получила это из сида, не?

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

> На shell можно сделать только совсем простые вещи.

Именно на такие случаи шелл и должен быть нацелен. Элементарная работа с файлами, элементарный запуск улитит, простейшие циклы. А сложные вещи - они очень многогранны. И потому для них нет серебряной пули. Где-то хороош перл, где-то хорош cmake, где-то лучше взять в руки c++.

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

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

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

> Самый простой способ починить это - поменять ссылку руками. Но если так и дальше дело пойдет, придется менять дистр.

Хочешь чтоб все "просто работало" - пользуйся стабильной веткой. Хочешь свежатинки - будь готов к нестабильности. Не понимаю твоего недовольства.

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

>Хочешь чтоб все "просто работало" - пользуйся стабильной веткой. Хочешь свежатинки - будь готов к нестабильности. Не понимаю твоего недовольства.

Хочу стабильный дистр. В который не тянут всякое г в надежде, что "потом допилим".

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

> В который не тянут всякое г в надежде, что "потом допилим".

Изначально bash хотели отпилить еще в lenny. Была проделана большая работа, но успеть - не успели. И потому в lenny идет bash. Никаких "потом".

Если не успеют допилить к squeeze, то и squeeze зарелизят с bash. Хотя я совершенно уверен, что успеют.

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

Отпилить баш? Тогда следующим шагом, конечно же, будет отпиливание ядра Linux, как тормозного и глючного. Вот для чего они с Hurd и kFreeBSD возились!

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

> Отпилить баш?

В качестве /bin/sh - да.

> Тогда следующим шагом, конечно же, будет отпиливание ядра Linux, как тормозного и глючного.


У вас глючная сборка libastral :D

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

Хоть лично я с определенным фанатизмом отношусь к идее микроядерности. Трудно пройти мимо такой няшки, как l4.

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

> Где-то читал, что из-за /bin/sh -> /bin/dash в убунте падает пересборка ядра

Врут, нормально всё работает.

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