Здравствуйте, 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: [email protected]
skype: krylov_alexey