source
コマンドで実行
source
コマンドを使用することで実行できます。
ターミナル
$ source ./foo/bar.sh
また以下のように.
でも同様に実行できます。
shにはsource
コマンドがないのでshの場合には.
を使用する必要があります。
ターミナル
$ . ./foo/bar.sh
source
コマンドでの実行には以下の特徴があります。
- 現在実行中のシェル環境でスクリプトが実行される
現在実行されているシェルがshの場合にはshが使用されます。そのためスクリプトの実行が現在のシェル環境に影響されます。またスクリプトの実行結果が現在のシェル環境に反映されます。 - 実行権限は不要
- shebang(
#!/bin/bash
など)は不要
shebangを記述しても現在実行中のシェルで実行されます。
シェルの引数として実行
以下のようにシェルの引数として実行できます。
ターミナル
bash ./foo/bar.sh
シェルの引数として実行する方法には以下の特徴があります。
- 指定したシェルで実行される
現在実行されているシェルがshの場合でもbash ./foo/bar.sh
とするとbashで実行されます。そのためスクリプトの実行は現在のシェルの環境に影響されません。 - 実行権限は不要
- shebang(
#!/bin/bash
など)は不要
shebangを記述しても指定したシェルで実行されます。
パスを指定して実行
パスを指定することで実行できます。
$ ./foo/bar.sh
パスを指定して実行する方法には以下の特徴があります。
- shebangのシェルで実行される
shebangを#!/bin/bash
と記述するとbashで実行されます。 - 実行権限が必要
実行前にchmod +x ./foo/sample.sh
などを実行して実行権限を付与する必要があります。 - shebang(
#!/bin/bash
など)が必要
shebangを記述してシェルなどを指定する必要があります。
なお環境変数PATH
に指定されているディレクトリに保存するとパスを指定せず実行できます。
ターミナル
$ bar.sh