シェルヘッダを追加する必要があるかどうか疑問に思います。
#!/bin/bash
スクリプトはsecond.sh
単に関数を定義し、他のスクリプトから呼び出しますscript.sh
。
たとえば、次のようなものがありscript.sh
ます。
#!/bin/bash
source second.sh
func1 "make amerika great again "
echo $I_AM_SAY
そして、second.sh
最初のスクリプトで呼び出された関数のみが含まれます。
X=soon
function func1 {
fun=$1
I_AM_SAY=$fun$X
}
second.sh
これを次のように定義する必要がありますか?
#!/bin/bash
X=soon
function func1 {
fun=$1
I_AM_SAY=$fun$X
}
または次のように:
#!/usr/bin/env bash
X=soon
function func1 {
fun=$1
I_AM_SAY=$fun$X
}
答え1
いいえ、shebangラインは必要ありません。実行中のシェルはスクリプトを直接インポートし、新しいシェルを起動しないため(スクリプトを取得するための全体的なポイント)、シェルとカーネルの両方がどのシェルを知る必要はありません。実行するために使用されました。
second.sh
スクリプトが呼び出されるのを完全に防ぐには、次のように追加できます。
#!/usr/bin/false
シェルボーンライン。
答え2
他のスクリプトのファイルを使用している場合、source
ハッシュバンは解釈されません(ただのコメントにすぎません)。ただし、これは読者に、スクリプトが特定のシェルに固有の機能を使用することを思い出させるための注意事項として機能します。もちろん、ファイルの上部付近のコメントにスクリプトを記述するので、コメントにプレーンテキストとしてこれを言及する必要があります。そうですか?