2017-06-13 3 views
0

Ich schreibe gerade ein Skript, das ein Ubuntu Img erstellt. Da ich solche anpassen möchte, benutze ich sudo chroot target bash script.sh in meinem Hauptskript, um das Stammverzeichnis zu ändern und script.sh von mir automatisch zu starten.Wie root shell eingeben, Befehle ausführen, beenden und mit dem Skript fortfahren?

Jetzt im Skript, als letzten Befehl, schrieb ich. Ich möchte dieses Stammverzeichnis verlassen und zurück zum "normalen" gehen und dann mit meinem Skript fortfahren. Wie ist das möglich?

Wenn das ein wenig verwirrend ist, fragen Sie einfach und ich werde Ihnen mehr erzählen.

Danke!

+0

Bitte Code eingeben. Da Stack Overflow den Schließen-Grund von Ihnen verbirgt: * Fragen, die Debugging-Hilfe suchen ("Warum funktioniert dieser Code nicht?") Müssen das gewünschte Verhalten, ein spezifisches Problem oder einen Fehler und den kürzesten Code enthalten, um es in der Frage selbst zu reproduzieren . Fragen ohne eine klare Problemstellung sind für andere Leser nicht nützlich. Siehe: [So erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel] (https://stackoverflow.com/help/mcve). * – jww

Antwort

1

Vielleicht ist die Frage nicht klar genug. Was gefragt wird, ist, was es getan wird. Beim Ausführen eines einfachen Befehls (nicht exec und ohne &) erstellt der Shell-Prozess einen neuen Prozess und wartet auf dessen Beendigung, und die spezielle Variable $? wird mit exit aktualisiert. Alle durch den zweiten Prozess vorgenommenen Umgebungsänderungen gehen verloren, wenn sie beendet werden, und die Aufrufer-Shell-Umgebung wird nicht geändert, wie vor dem Aufruf des Befehls.

Wenn "mein Skript" ist die script.sh so der aufgerufene Prozess aus dem Stammverzeichnis zu beenden und fortzufahren, ist es nicht möglich. Vielleicht könnte ein intermediate caller.sh erstellt werden.

sudo bash caller.sh 

# caller.sh 
chroot target bash script.sh 
# continue 
Verwandte Themen