For scripts (perl, shell, whatever...), prefix ${pexp} with the script's interpretor path as defined by the script.
No need to override ${pexp} in the daemon's rc file. Index: rc.subr =================================================================== RCS file: /cvs/src/etc/rc.d/rc.subr,v retrieving revision 1.70 diff -u -r1.70 rc.subr --- rc.subr 11 Jul 2013 09:34:33 -0000 1.70 +++ rc.subr 16 Sep 2013 10:26:09 -0000 @@ -221,4 +221,9 @@ unset _rcflags _rcuser pexp="${daemon}${daemon_flags:+ ${daemon_flags}}" +file ${daemon} | fgrep -q script && +{ + shebang=$(head -n 1 ${daemon} | cut -d! -f2) + pexp="${shebang} ${pexp}" +} rcexec="su -l -c ${daemon_class} -s /bin/sh ${daemon_user} -c" e.g. Remove pexp= from /etc/rc.d/greyscanner: --- greyscanner.pkg Mon Aug 19 14:46:01 2013 +++ greyscanner Mon Sep 16 11:30:33 2013 @@ -6,7 +6,6 @@ . /etc/rc.d/rc.subr -pexp="/usr/bin/perl ${daemon}" rc_reload=NO rc_cmd $1 $ sudo /etc/rc.d/greyscanner restart greyscanner(ok) greyscanner(ok) $ cat /var/run/rc.d/greyscanner /usr/bin/perl /usr/local/sbin/greyscanner $ ps auxwww | fgrep greyscanner root 25280 0.0 0.6 4896 2920 ?? Is 11:35AM 0:00.04 /usr/bin/perl /usr/local/sbin/greyscanner Cheers, -- Craig Skinner | http://twitter.com/Craig_Skinner | http://linkd.in/yGqkv7