シェルは、
・bash コマンドで実行する方法
・パスを指定して実行する方法
・source コマンドで実行する方法
などいくつか実行方法がある。
ここでは、実行方法と違いについて記載する。
bash コマンドで実行する方法
下記のように、bash コマンドの引数にシェルスクリプトを指定して実行する。
・bash コマンド
bash test.sh
パスを指定してシェルを実行する方法
下記のように、パスを指定してシェルを実行する。パスは、絶対パスと相対パスのどちらも指定できる。
パスを指定してシェルを実行する方法では、シェルスクリプトのファイルに実行権を設定する必要があるが、それ以外は bash コマンドと同様にシェルを実行できる。
・絶対パスを指定してシェルを実行するコマンド
/work/sh/test.sh
・相対パスを指定してシェルを実行するコマンド
./test.sh
source コマンドで実行する方法
下記のように、source コマンドの引数にシェルスクリプトを指定して実行する。
・source コマンド
source test.sh
シェルスクリプトから source コマンドで別のシェルスクリプトを実行すると、実行元のシェル変数を source コマンドで実行したシェルスクリプト内で参照でき、その変数の値を変更することもでき、実行元のシェルスクリプトでその変更された変数を参照することができる。
例えば、下記のシェル test_a.sh を実行すると、test_a.sh で設定した変数 var_a を test_b.sh で参照することができる。また、test_a.sh で設定した変数 var_b を test_b.sh で変更して、その変更した値を test_a.sh で参照することができる。
・test_a.sh
#!/bin/bash
var_a="a1"
var_b="b1"
source test_b.sh
echo ${var_b}
echo ${var_c}
・test_b.sh
#!/bin/bash
var_b="b2"
var_c="c2"
echo ${var_a}
シェル test_a.sh の実行結果
a1
b2
c2
シェル test_a.sh で source コマンドではなく、bash コマンドやパスを指定してシェル test_b.sh を実行する場合は、シェル test_a.sh で設定した変数をシェル test_b.sh で参照できず、シェル test_b.sh で設定した変数もシェル test_a.sh で参照できない。
※親シェル test_a.sh は、下記のどちらで実行しても上記と同じ実行結果となる。
bash test_a.sh
./test_a.sh
source test_a.sh
0 件のコメント :
コメントを投稿