Linux シェルスクリプト|シェル を実行する 3 つの方法と違い bash コマンドで実行 / パスを指定して実行 / source コマンドで実行|bash シェル


シェルは、

・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 件のコメント :

コメントを投稿