2017-06-13 9 views
0

私は現在、Ubuntu imgを作成するスクリプトを書いています。 私はこのようなものをカスタマイズしたいので、メインディレクトリにsudo chroot target bash script.shを使ってルートディレクトリを変更し、自動的にscript.shを起動します。ルートシェルを入力し、コマンドを実行し、終了してスクリプトを続行するにはどうすればいいですか?

スクリプトでは、最後のコマンドとして、exitを書きました。私はこのルートディレクトリを終了し、 "通常の"ディレクトリに戻り、スクリプトを続行したいと考えています。 これはどのように可能ですか?

これがちょっと混乱している場合は、尋ねてみてください。

ありがとう!

+0

コードを表示してください。スタックオーバーフローはあなたからの閉鎖理由を隠すので:*デバッグのヘルプを求める質問( "なぜこのコードは機能していないの?")は、質問自体にそれを再現するのに必要な特定の問題やエラー、 。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[最小限で完全で検証可能なサンプルの作成方法](https://stackoverflow.com/help/mcve)* – jww

答えて

1

質問が不明なことがありますか。それは何が行われているか尋ねられます。シェルプロセスは、単純なコマンド(execではなく、&ではなく)を実行すると、新しいプロセスを作成し、その終了を待って、特殊変数$?がexitで更新されます。 2番目のプロセスによって行われたすべての環境の変更は、終了時に失われ、呼び出し元のシェル環境はコマンドを呼び出す前と同じように変更されません。

"my script"がscript.shなので、ルートディレクトリから終了して処理を続けるために呼び出されたプロセスです。これは不可能です。おそらく、中間のcaller.shを作成することができます。

sudo bash caller.sh 

# caller.sh 
chroot target bash script.sh 
# continue 
関連する問題