概要
本記事では、シバン、シェルスクリプトの実行方法について解説します。
スクリプト言語
スクリプトは、一連の命令を記述したテキストファイルであり、特定のタスクを自動化するために使用されます。スクリプトは通常、高級プログラミング言語で書かれており、逐次的に実行されることを前提としています。 スクリプトの例としては、シェルスクリプト、Python スクリプト、Perl スクリプトなどがあります。 スクリプトを実行するには、対応するインタプリタが必要です。 インタプリタは、スクリプトに記述された命令を一行ずつ読み取り、即座に実行するプログラムです。 スクリプト言語はインタプリタによって実行されるため、コンパイルが必要ありません。
シバン (shebang)
シバン(shebang)とは、スクリプトファイルの先頭に記述されるインタプリタを指定するための特定の文字列のことを指します。
シバンは、スクリプトファイルの最初の行に #!
で始まる形式で記述されます。
シバンの形式
シバンは以下の形式で記述されます:
#!/path/to/interpreter
ここで、/path/to/interpreter
はスクリプトを実行するインタプリタのフルパスです。例えば、Python スクリプトの場合、一般的なシバンは以下のようになります:
#!/usr/bin/env python3
シバンを使用することで、スクリプトファイルを実行可能な形式にすることができます。 シバンがない場合、スクリプトを実行するためにはインタプリタを明示的に指定する必要があります。
シバンの例
Bash スクリプト
#!/bin/bash echo "Hello, World!"
Python スクリプト
#!/usr/bin/env python3 print("Hello, World!")
Perl スクリプト
#!/usr/bin/perl print "Hello, World!\n";
スクリプトの作成と実行例
以下は、シバンを使用したシェルスクリプトの作成と実行の例です。
スクリプトファイル
hello.sh
を作成します。#!/bin/bash echo "Hello, World!"
スクリプトファイルに実行権限を付与します。
chmod +x hello.sh
スクリプトファイルを実行します。
./hello.sh
シェルスクリプトの実行方法
実行方法 | 説明 | 変数の影響 | 実行権限 |
---|---|---|---|
./script.sh |
スクリプトファイルを新しいシェルで実行します。 | 影響しない | 必要 |
bash script.sh |
bash インタプリタを使ってスクリプトファイルを実行します。 |
影響しない | 不要 |
. script.sh |
スクリプトファイルを現在のシェルで実行します。 | 影響する | 不要 |
source script.sh |
. script.sh と同様 |
影響する | 不要 |
環境変数、シェル変数の影響
新しいシェルで実行する場合は、スクリプト内で定義した環境変数やシェル変数は呼び出し元には影響しません。 一方、現在のシェルで実行する場合は、スクリプト内で定義した環境変数やシェル変数は呼び出し元に影響することに注意してください。
例として、以下のシェルスクリプトを作成します。
script.sh
# script.sh
export TEST_ENV="test"
TEST_VAR="test"
./script.sh
やbash script.sh
の場合 呼び出し元のシェルでecho $TEST_ENV
やecho $TEST_VAR
を実行しても何も表示されません。. script.sh
やsource script.sh
の場合 呼び出し元のシェルでecho $TEST_ENV
やecho $TEST_VAR
を実行すると、それぞれtest
が表示されます。
コメント