Форум проекта PuppyRus Linux

Разработки проекта PuppyRus => PFS-utils => Разработка PFS и Initrd => Разработка PFS-utils v.4 => Тема начата: betcher от 26 Декабрь 2019, 09:10:53

Название: Шебанг
Отправлено: betcher от 26 Декабрь 2019, 09:10:53
При запуске утилит в стреде убунту возникла проблемка. Сам не разбирался,  все со слоов ingvaro. Кому интересно смотрите наш форум.
Смысл в том, что в убунте sh это не ссылка на bash, а что-то другое. И это нечто не понимает == в квадратых скобках, только одинарное =.  Не думал, что это башизм, но похоже так.
MagOS betcher # man test |grep =
       STRING1 = STRING2
       STRING1 != STRING2

Не удивлюсь если всплывет еще что-то. Отсюда вопрос, как чинить будем? Зменять == на = или менять шебанг на /bin/bash?
Название: Re: Шебанг
Отправлено: ingvaro от 26 Декабрь 2019, 11:15:39
Два варианта  правки
1) В скриптах PFS   1 строка   #!/bin/bash
2)   В скриптах PFS  1 строка  #!/bin/sh  и  во всех скриптах **==**  заменены  на **=**

Оба варианта рабочие. Все работает, по крайней мере паковка и распаковка модуля. Тени на месте
Обсуждение на нашем форуме - https://forum.magos-linux.ru/t/magosm-dlya-magos-2016-64/112/26?u=ingvaro
PS
Есть и третий вариант. Не запускать PFS на Убунту
Название: Re: Шебанг
Отправлено: sfs от 26 Декабрь 2019, 11:26:53
Давайте ориентироваться там где можно (а вроде в пфс везде можно) на sh из busybox
Это будет максимально легко и универсально
Название: Re: Шебанг
Отправлено: betcher от 26 Декабрь 2019, 12:13:45
sh из бизибокс понимает ==? Думаю - да, раз до сих пор работало. А sh из убунты - нет.  Вопрос не решен. Оставить все как есть не вариант.
Название: Re: Шебанг
Отправлено: sfs от 27 Декабрь 2019, 10:05:38
sh из бизибокс понимает ==?
Да.
Код
# busybox sh -c "[ 1 = 1 ] && echo ok"
ok
И busybox ash понимает. И оба они == понимают
А чем == отличается от = ?
В юбунте sh - симлинк на dash
Название: Re: Шебанг
Отправлено: betcher от 27 Декабрь 2019, 11:25:09
А чем == отличается от = ?
Хороший вопрос. Всегда думал, что == это для сравнения, = для присвоения значения переменной. То что = работает и в сравнении конечно знал, но думал что это просто допущение. В man test, а квадратная скобка это синоним для test, написано конкретно одинарное равно. Теперь не пойму откуда вообще взялось двойное :)
По идее можно везде заменить двойное равно на одинарное, но не сломается ли где-то еще.
Надо подумать на счет проверки в разных шелах в селфтест.
Название: Re: Шебанг
Отправлено: betcher от 04 Январь 2020, 10:18:01
Запушил в v4 замену двойного равно на одинарные. Селфтест в магос проходит, надеюсь ни у кого  не отвалился.
Название: Re: Шебанг
Отправлено: ingvaro от 11 Январь 2020, 21:52:45
Два варианта  правки
1) В скриптах PFS   1 строка   #!/bin/bash
2)   В скриптах PFS  1 строка  #!/bin/sh  и  во всех скриптах **==**  заменены  на **=**

Опять Убунту
Применил вариант 1, но пошли сбои и непонятки
По результатам тестирования остался  **только вариант 2**
Иначе например mkpfs мне модуль в Убунту пакует, но жалуется на стр 371 в pfs
И если войти в систему под юзером, в терминале не работали клавы перемещения ????
Заменил все ==  на =  в PFS
Все ок !!!!

Название: Re: Шебанг
Отправлено: betcher от 08 Апрель 2021, 16:49:13
В pfsextract : popd pushd
Убрать?
Название: Re: Шебанг
Отправлено: sfs от 08 Апрель 2021, 17:04:21
Раз изначально договаривались, чтобы по возможности работало на голом busubox - хорошо бы