ファイルに関数のみを含むシェルを定義する必要がありますか?

ファイルに関数のみを含むシェルを定義する必要がありますか?

シェルヘッダを追加する必要があるかどうか疑問に思います。

#!/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

シェルボーンライン。

おすすめ記事