回答:
export
export
コマンドが実行されたシェルの子プロセスに変数の割り当てをエクスポートします。コマンドライン環境はスクリプトのシェルの親であるため、変数の割り当ては表示されません。
.
(またはsource
)bashコマンドを使用して、現在のシェル環境でスクリプトコマンドを実行し、目的を達成できます。たとえば、
source ./script.sh
echo "$BASE"
生産します
/home/develop/trees
source
多くの場合、スクリプトの中で見られるコマンドは、のために、bashの同義語である.
POSIX標準の一部である、(そう.
例えば、ダッシュで利用可能ですが、source
ではありません)。
. ./script.sh # identical to "source ./script.sh"
(. script.sh
そしてsource script.sh
最初にscript.sh
inを探すPATH
ので、へのパスを指定する方が安全script.sh
です。)
export
サブシェルに変数を渡す必要はありません。サブシェルは、変数や関数などを含む現在のシェルのコピーです。エクスポートされた変数は、そのプロセスが別のシェルであるかどうかに関係なく、シェルから生成される新しいプロセスにコピーされます。次に、.
ソーシング用のPOSIXコマンドです。Bashはsource
より読みやすい同義語として追加しますが、shで使用できることに依存することはできません。最後. ./script
の代わりに、. script
あなたは驚きを避けたい場合。mywiki.wooledge.org/BashFAQ/060