Здравствуйте, Eugene.

> Вы запутались в синтаксических конструкциях шелла,
> которыми, увы, владеете совсем нетвердо.

>> name=`echo $0 | sed 's/.*\///'`

> Потрассируем:
> name=mpd5

>> rcvar=${name}_enable
> rcvar=mpd5_enable

>> var=`eval echo $name`_enable

> var=mpd5_enable

>> eval $var="NO"

> mpd5_enable=NO

> То есть, тут принудительно mpd5_enable сброшено в NO.
> Не думаю, что так задумано.

Все верно, именно так все и задумано. Если в /etc/rc.conf
пропущена строка
mpd5_enable="YES"
Чтобы переменная не потерялась, и установилась в NO

>> var1=`eval echo $name`_flags
>> eval $var1="-b"

> И тут тоже mpd5_flags принудительно сбрасывается в -b.

> Каждое использование обратных апострофов это запуск сабшелла, не надо так.
> Надо вот как:

> name=${0##*/} # а ещё лучше не извращаться и написать просто name=mpd5, так 
> читабельней
> rcvar=$name_enable              # тут будет rcvar=mpd5_enable
> eval var=\$$name_enable         # тут будет var=$mpd5_enable

Да, действительно, так лучше. Спасибо.

> Но и это тоже всё сплошь плохо читаемые и никому ненужные усложнения.
> Делайте нормально:

> name=mpd5
> rcvar=$name_enable              # или даже rcvar=mpd5_enable
> : ${mpd5_enable:=NO}            # если mpd5_enable пусто, то присвоить NO, 
> иначе не менять

На самом деле все это писалось для того, чтобы потом скрипт этот не править а 
просто
сделать копию с другим именем, добавить конфиг со следующим IP и стартовать mpd5
в новой таблице маршрутизации ...fib=1

>> Плюс, если кто знает, как можно проверить работоспособность
>> стартовых скриптов не перезагружая сервер. Как я понял, команды
>> start/stop не совсем показатель того, что все ок.

> start/stop показатель, если сам скрипт не содержит ошибок.
> А если сам скрипт сбрасывает mpd5_enable в NO...
> Такие ошибки можно искать через sh -x /usr/local/etc/rc.d/mpd5 start 2>&1

Да, но скрипт нормально стартует при запущенной системе. Он не отрабатывает 
только при
старте.

Как правильно заметил Michael A. Revenko,

>environment для пользователя и init процесса весьма разные.
>можно попробовать
>env -i /usr/local/etc/rc.d/mpd5 (start|status|stop)

Спасибо всем за помощь.

-----------------
С уважением,
Крылов Алексей
тел. +38 (067) 725 95 54
email: kry...@ukr.net
skype: krylov_alexey

Ответить