@zzzevaka

Почему не работает env perl в скриптах rc.d?

FreeBSD 8.2. Пытаюсь написать rc.d скрипт для запуска perl скрипта при старте системе.

perl скрипт:
#!/usr/bin/env perl
print "Hello World!\n";


rc.d скрипт:
#!/bin/sh
#
# PROVIDE: mytest
# KEYWORD: FreeBSD

. /etc/rc.subr

name="mytest"
rcvar=`set_rcvar`
start_cmd="mytest_start"

mytest_start ()
{
        out=`/home/user/mytest 2>&1`
        echo $? > /tmp/file
        echo $out >> /tmp/file
}

load_rc_config $name
run_rc_command "$1"


При перезагрузке наблюдаю:
cat /tmp/file
127
env: perl: No such file or directory


При этом /usr/local/etc/rc.d/mytest start отрабатывает нормально.
Если задать в perl-скрипте интерпретатор #!/usr/local/bin/perl отрабатывает нормально.

На сколько я понимаю, проблема в том, что env в момент попытки выполнения скрипта не знает perl. Поигрался с REQUIRE - не помогло.

Толкните в нужную сторону, пожалуйста.
  • Вопрос задан
  • 931 просмотр
Решения вопроса 1
@zzzevaka Автор вопроса
В момент выполнения rc.d скрипта:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
perl же установлен в /usr/local/bin/

Пока решил проблему так:
superuser.com/questions/224974/how-do-i-add-a-loca...

Перед выполнением команды в rc.d скрипте добавить нужный путь в PATH:
PATH=${PATH}:/usr/local/bin
export PATH


Решение не изящное, т.к. при таком подходе теряется вся прелесть объявления интерпретатора через env.

mureevms спасибо!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mureevms
Узнайте куда у Вас установлен перл:
whereis perl
perl: /usr/bin/perl /usr/local/man/man1/perl.1.gz /usr/src/contrib/file/Magdir/perl

И указывайте на него в начале скрипта:
#!/usr/bin/perl
Сам скрипт
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы