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 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.