私はさまざまな他のシェルスクリプトで定義された関数を呼び出すマスターシェルスクリプトを持っています。マスタースクリプトには、 'source'コマンドを使用する他のスクリプトが含まれています。 彼女のスクリプト( "#!/ bin/sh")に何が設定されているかにかかわらず、すべてのスクリプトに共通のインタプリタを使用したいと思います。私はコマンドラインからその通訳を提供したい。例えば :(#!/ binに/ shを持つ)シェルスクリプトでsha bangインタプリタを再帰的にオーバーライドする方法はありますか?
master.sh(#/ binに/ shを持つ!)
subscript1.sh
subscript2.sh(と#/ binに/!添字で定義されていると 'ソースsubscript1.sh'、 'ソースsubscript2.sh' として含まれている関数を呼び出しmaster.sh SH)
subscript3.sh(#付き!/ binに/ SH)
と 'source subscript3.sh'です。
./master.shを実行すると、サブスクリプトはそれぞれのインタプリタを "#!/ bin/sh"の指示に従って使用します。私は '/ bin/bash'、マスターとサブスクリプトを使ってすべてを実行したいのですが、そのようなスクリプトがたくさんあるので、彼女のバングラインを変更することはありません。これを行う方法はありますか?
答えてくれてありがとう、Barmar。しかし、私はそれをやってみましたし、それは動作しません。私は、彼女が行を立てるという考えは、どのプロセスやシェルがスクリプトを起動するかにかかわらず、定義されたインタプリタを使うことだったと思います。私は確かにこれを明確にする必要があります。 – Navin
それはシバンの仕組みではありません。インタプリタへの入力ファイルではなく、コマンドとして実行する場合、カーネルにスクリプトの実行方法を指示します。 – Barmar
'bash。/ master.sh'は' cat/master.sh'とまったく同じです。両方とも指定されたコマンドを実行し、引数としてファイル名を指定します。 'bash'はファイルを解釈し、' cat'はファイルを出力します。 – Barmar