別のスクリプトを起動し、直接子として持つスクリプトを作成しようとしています。私の目標は次のとおりです。
- 子プログラムは別の $HOME を参照する必要があります
- 子スクリプトは、現在の作業ディレクトリとは別のディレクトリ (つまり、別の pwd) で実行する必要があります。
- 余分なシェルはありません
最初の 2 つの目標は subshells と exec で達成しましたが、3 番目の目標はまだ達成できていません。誰かが私を助けることができますか?
詳細はこちら。説明を簡単にするために、最初のスクリプトrun
を 、もう 1 つのプログラムを と呼びますsleepcmd
。これがsleepcmdスクリプトの内容です
echo $HOME && exec sleep 1000
実行スクリプトの内容は次のとおりです
(HOME=~/foo/bar && cd $HOME/bin && ./sleepcmd)
./sleepcmd 呼び出しの前に exec を追加する、つまり
(HOME=~/foo/bar && cd $HOME/bin && exec ./sleepcmd)
sleepcmd (または sleep) を直接実行する場合と比較して、これを 1 つの余分なシェルに取得します。
sleep 1000
別の $HOME と作業ディレクトリで呼び出しながら、() サブシェルを取り除くにはどうすればよいでしょうか?