Bashは、実行可能ファイルの実行を許可する唯一のシェルスクリプト言語です。
実行可能ファイルは
#!/bin/bash
最小限のフラグで始まる必要があります。set
スクリプトを呼び出してもbash script_name
機能が中断されないように、シェルオプションを設定するために使用されます。
set
特に機能の損傷を防ぐために使用する部分です。このように特定のやり方で呼ぶことはそれと何が関係していますか?
答え1
「最小フラグ数」は、ハッシュバン行に設定されたフラグを示す。スクリプトの起動時に読み込まれ、./somescript
カーネルはhashbang行を読み取り、そこにあるパスとオプションから新しい引数のリストを作成します。しかし、はいいいえbash somescript
スクリプト自体ではなくカーネルを実行する必要があるため、スクリプトが実行されると、これが発生する可能性がbash
あります。シェル自体は、この行を最終的にスクリプトを読み取るときに無視されるコメントとして扱います。
たとえば、次のスクリプト(./hello
)を試してみてください。
#!/bin/bash -x
echo hello
2 つの方法で実行します。
$ ./hello
+ echo hello
hello
$ bash hello
hello
-x
追加のトレース出力は最初の場合にのみ表示され、2番目の呼び出しではフラグは無視されます。
コマンドを使用してset
フラグを明示的に有効にすると、次のように動作します。
#!/bin/bash
set -x
echo hello
(しかし、使用しようとすると注意してくださいperl
。するまた、ハッシュバンライン自体についても説明します。 )