Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
pipe.sh
export START=100 . ./other.sh & wait
other.sh
sleep 5 export END=200
しかし、変数ENDがに表示されませんexport -p。フォアグラウンドでother.shをソースすると、それでも機能します。
export -p
export START=100 . ./other.sh
バックグラウンドプロセスから変数をエクスポートするにはどうすればよいですか?回避策はありますか?
子プロセスは親環境を変更できません。何らかの方法で親から変数を宣言する必要があります。たとえば、ファイルを使用します。
pipe.sh:
export START=100 . ./other.sh > tmp & wait source tmp rm tmp echo $END
other.sh:
sleep 5 echo "export END=200"
この回答も参照してください。