シェルスクリプトの「エクスポート」変数

シェルスクリプトの「エクスポート」変数

2つのスクリプトがあり、()コマンドを使用して実行しますfirst.shsecond.shfirst.shsecond.sh.source

このスクリプトが詰まっています。

First.sh

 value="myvalue"
 export value

 oldvalue="othervalue"
 export value

値を初期化してエクスポートした後、以前の値を初期化して再エクスポートしましたvalueoldvalueothervaluesecond.sholdvaluefirst.sh

ベストアンサー1

次のようにして2番目の「スクリプト」を取得.すると、走る別のスクリプトです。

たとえば、次の2つのスクリプトを考えてみましょう。その一つは走るもう一つ:

$ ls
script1*    script2*

$ cat script1
#!/bin/bash

export value="myvalue"
oldvalue="othervalue"

# Here script1 is running the second script (not sourcing it)
./script2

$ cat script2
#!/bin/bash

echo "value: ${value}"
echo "oldvalue: ${oldvalue}"

セットscript1とエクスポートとセットは、エクスポートではなくvalue別々のプロセスとして oldvalue実行されます。これら2つの値を順番に印刷してみてください。出力は次のとおりです。script2script2

$ ./script1
value: myvalue
oldvalue:

ご覧のとおり、この場合、2つの変数の可視性に対する期待は正確です。oldvalueから派生していないため、script1その値はで定義されていませんscript2

おすすめ記事