द�निया के अजीबोगरीब कानून जिन�हें ज
目次:
この文字シーケンス(
#!
)はshebangと呼ばれ、ファイルの残りを解析するために使用するインタープリターをオペレーティングシステムに伝えるために使用されます。
シバン通訳指令
Shebangインタープリターディレクティブの形式は次のとおりです。
#!interpreter
- ディレクティブは、スクリプトの最初の行でなければなりません。ディレクティブは、shebang
#!
始まる必要があり#!
シバング文字の後の空白はオプションです。インタープリターはバイナリファイルへのフルパスです(例:/bin/sh
、/bin/bash
)。インタープリターの引数はオプションです。
例:
-
#!/bin/bash
-bash
を使用してファイルを解析します。#!/usr/bin/env perl
-env
コマンドを使用して、perl
実行可能ファイルへのパスを見つけます。#!/usr/bin/python
python
バイナリを使用してファイルを実行します。
BashスクリプトでのShebangの使用
シバンが指定されておらず、Bashスクリプトを実行しているユーザーが別のシェルを使用している場合、そのシェルで使用されるデフォルトのインタープリターがスクリプトを解析します。 たとえば、
bash
のデフォルトのインタープリターは
bash
で、
zsh
のデフォルトのインタープリターは
sh
です。 スクリプトが常にBashで解釈されるようにするには、shebangを使用して実行可能パスを指定する必要があります。
Shebangディレクティブを使用してインタープリターを設定するには、2つの方法があります。
-
bashバイナリへの絶対パスを使用します。
#!/bin/bash
env
ユーティリティの使用:#!/usr/bin/env bash
2番目のアプローチを使用する利点は、ユーザーの
$PATH
環境変数で
bash
実行可能ファイルを検索することです。
bash
へのパスが複数ある場合、最初のパスがスクリプトによって使用されます。
最初のオプションを使用してBashシェルにオプションを追加する場合は、インタープリターに渡します。 たとえば、スクリプトをデバッグモードで実行するには、
#!/bin/bash -x
ます。
env
メソッドを使用している場合は、
set
を使用してオプションを宣言する必要があります。 デバッグモードを有効にするには、shebang行の後に
set -x
を追加します。
サンプルスクリプト
「Hello、World」を出力するshebangを使用して簡単なスクリプトを作成しましょう。 テキストエディターを開き、次の行を貼り付けます。
nano hello_world
こんにちは世界
#!/bin/bash echo "Hello, World"
コマンドラインからインタープリターを指定せずにスクリプトを実行できるようにするには、ファイルを実行可能にする必要があります。
chmod +x hello_world
ここで、。
./
続けてスクリプト名を入力してスクリプトを実行できる場合:
./hello_world
シバンのオーバーライド
何らかの理由で、Shebang行に設定されているインタープリターをオーバーライドする場合は、目的のシェルを明示的に指定してスクリプトを実行する必要があります。
たとえば、
bash
シェルを使用して、Shebang行で
#!/bin/sh
指定されているスクリプトを実行するには、次のように入力します。
bash hello_world
スクリプトの予期しない動作を引き起こす可能性があるため、シェルインタープリターをオーバーライドすることはお勧めできません。
結論
ここまでで、Shebangとは何か、Bashスクリプトでそれを使用する方法について十分に理解できたはずです。
バッシュターミナル