2017-01-06 13 views
0

なぜ私は${name}_chdir変数が私のために働いていないのか理解しようとしています。最後に、-xvでスクリプトを実行させた後、cdコマンドが私の場合でも実行されていないことがわかります。ここに私のスクリプトは次のとおりです。このrc.dスクリプトでchdirが起きないのはなぜですか?

#!/bin/sh 
set -xv 
exec 1>/tmp/awning.rclog 2>&1 

# REQUIRE: NETWORKING LOGIN DAEMON 
# KEYWORD: shutdown 

. /etc/rc.subr 

name="awning" 
rcvar="awning_enable" 
awning_chdir="/usr/sbin/awning" 

pidfile="/var/run/awningd.pid" 
procname="daemon" 

# -f flag is to redirect stdin/stdout/stderr to /dev/null to prevent node from crashing 
# on system-startup 
start_cmd="/usr/sbin/daemon -r -P ${pidfile} -f -u pierre /usr/sbin/awning/intro.js" 
command="/usr/sbin/daemon -r -P ${pidfile} -f -u pierre /usr/sbin/awning/intro.js" 
load_rc_config $name 
run_rc_command "$1" 

最初は私だけstart_cmdを使用していたが、その後、私はrc.subrに次のように読んで:

ので
 Directory to cd to before running _command_, if 
     ${name}_chroot is not provided. 

_chdir

$ {名前}私は多分、混乱していると思ったので、私はcommand=....ビットを追加し、start_cmd=....行を削除しましたが、それでもまだ成功していませんs。

+ _chdir=/usr/sbin/awning _chroot='' _nice='' _user='' _group='' _groups='' _fib='' _env='' _prepend='' _login_class=daemon _oomprotect='' 
+ [ -n '' ] 
+ [ -z yes ] 
+ [ start '!=' start ] 
+ [ -n awning_enable -a start '!=' rcvar -a start '!=' stop -a start '!=' describe ] 
+ checkyesno awning_enable 
+ eval '_value=$awning_enable' 
+ _value=YES 
+ debug 'checkyesno: awning_enable is set to YES.' 
+ return 0 
+ [ start '=' start -a -z yes -a -n '' ] 
+ eval '_cmd=$start_cmd' '_precmd=$start_precmd' '_postcmd=$start_postcmd' 
+ _cmd='/usr/sbin/daemon -r -P /var/run/awningd.pid -f -u pierre /usr/sbin/awning/intro.js' _precmd='' _postcmd='' 
+ [ -n '/usr/sbin/daemon -r -P /var/run/awningd.pid -f -u pierre /usr/sbin/awning/intro.js' ] 
+ _run_rc_precmd 
+ check_required_before start 
+ local _f 
+ return 0 
+ [ -n '' ] 
+ check_required_after start 
+ local _f _args 
+ return 0 
+ return 0 
+ _run_rc_doit '/usr/sbin/daemon -r -P /var/run/awningd.pid -f -u pierre /usr/sbin/awning/intro.js ' 
+ debug 'run_rc_command: doit: /usr/sbin/daemon -r -P /var/run/awningd.pid -f -u pierre /usr/sbin/awning/intro.js ' 
+ eval '/usr/sbin/daemon -r -P /var/run/awningd.pid -f -u pierre /usr/sbin/awning/intro.js ' 
+ /usr/sbin/daemon -r -P /var/run/awningd.pid -f -u pierre /usr/sbin/awning/intro.js 
+ _return=0 
+ [ 0 -ne 0 ] 
+ return 0 
+ _run_rc_postcmd 
+ [ -n '' ] 
+ return 0 
+ return 0 

_chdirが適切に設定されているが、それは何のために使ったことがないです。ここ-xvでスクリプトを実行しているから、保存された出力の関連「のdoIt」の部分です。正直なところ、それは、それらの変数のように見えます(_chdir_chroot、など)、実際にする必要がありますawning_chdirawning_chroot、等...に行くことができるもの

私は /etc/rc.subrををステップ実行した後、バージョン11.0-RELEASE-P2

答えて

0

を実行しています、私は文字通り単一のコマンドであることが必要コマンド=という(ハードな方法を)学びました。オプション(引数なし)のコマンドでも失敗したテストがあります([ ! -x $command ])。私はdaemonとその単一の引数/usr/sbin/awning/intro.jsを別々の変数:command_args =に渡していた問題を解決したオプションを分割しなければなりませんでした。

関連する問題