サーチ…


構文

  • bashインタプリタとして/bin/bashを使用してください:

    #!/ bin / bash

  • 実行可能ファイルenv PATH環境変数のbashインタプリタを検索する:

    #!/ usr / bin / env bash

備考

よくある間違いは、UNIX / Linuxシステム上でWindowsのend-line形式の\r\nスクリプトファイルを実行しようとすることです。この場合、shebangのスクリプトインタプリタは次のようになります。

/bin/bash\r

そして、気づかずに見つけられませんが、把握するのは難しいかもしれません。

ダイレクトシバン

bashインタプリタでスクリプトファイルを実行するには、スクリプトファイルの最初の行に、使用するbash実行ファイルの絶対パスを指定する必要があります。

#!/bin/bash

シバンのbashパスは解決され、スクリプトが次のように直接起動された場合にのみ使用されます。

./script.sh

スクリプトには実行権限が必要です。

スクリプトを実行するためにbashインタプリタが明示的に指定されている場合、shebangは無視されます。

bash script.sh

エンブシバン

スクリプトファイルを実行するにはbashで見つかった実行可能なPATH実行使用して、環境変数env 、スクリプトファイルの最初の行は、絶対パスを示さなければならないenv引数を持つ実行bash

#!/usr/bin/env bash

シバン内のenvパスは、スクリプトが次のように直接起動された場合にのみ解決され、使用されます。

script.sh

スクリプトには実行権限が必要です。

スクリプトを実行するためにbashインタプリタが明示的に指定されている場合、shebangは無視されます。

bash script.sh

他のシバン

カーネルが知っている2種類のプログラムがあります。バイナリプログラムは、通常、コンパイラによって生成されるELF( E xtenable L oadable F ormat)ヘッダによって識別されます。 2つ目はどんな種類のスクリプトでもあります。

ファイルが最初の行でシーケンス#!で始まる場合次の文字列はインタプリタのパス名でなければなりません。カーネルがこの行を読むと、このパス名で指定されたインタプリタを呼び出し、この行の次のすべての単語をインタプリタの引数として渡します。 「何か」または「間違った」という名前のファイルがない場合

#!/bin/bash something wrong
echo "This line never gets printed"

bashは存在しない "何か間違った"引数を実行しようとします。スクリプトファイルの名前も追加されます。これは明らかにエコーシェバングを使用し表示するには:

#"/bin/echo something wrong 
# and now call this script named "thisscript" like so:
# thisscript one two
# the output will be:
something wrong ./thisscript one two

awkのようないくつかのプログラムは、このテクニックを使って、ディスクファイルにあるより長いスクリプトを実行します。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow