いくつかのheredocの前にbashキーワードが来るのはなぜですか?

いくつかのheredocの前にbashキーワードが来るのはなぜですか?

一部の文書では、開始文字(<<)、名前、およびファイル記述子の前にbashキーワードが表示されます。たとえば、

bash /dev/fd/10 10<<'SES'

バッシュはなぜそこにいるのですか?私は、私はすでにBashで作業していて、catテキストを表示してから別のファイルにリダイレクトするために使用されているのと同じではないので、cat << EOT >> /file.txt新入生としてbashキーワードが必要な理由を尋ねました。

答え1

bashキーワードはなく、実行中のコマンドです。パラメータが渡されています/dev/fd/10。スクリプトを実行するシェル(bashであってもなくてもよい)は、ファイル記述子10から読み取られる区切り文字を設定します。

したがって、区切り文書をシェルスクリプトとして実行するためにbashが呼び出されます。これは行を読むのと似ていますbash /path/to/script.sh。この場合、スクリプトは区切られた文書から来ます。

なぜ誰もがこれを行ったことがあります(単に使用するのではなく、コンテキスト(およびおそらく記録)なしで答えることは不可能です。DopeGhotiが提案したように)1つの推測は、スクリプトがbashを必要とする他のシェルで実行できることです。別の推測の可能性は次のとおりです。スクリプト作成者が代替案を知らなかったということです。( commands )

stdinの代わりにFD 10を使用する理由は、スクリプトブロックもstdinから読み取る必要があるためです。

関連情報