2017-01-07 5 views
-2

ich einen solchen Code haben:nach exec in bash Weiter Skriptausführung

echo 'test' 
usr=$USER 
sudo sh -c "exec su $usr" 
echo 'test1' 

Und zum Beispiel echo 'test' Code ist, wo ich etwas konfigurieren, der mich requirs in neue Shell relogin. Aber dann, wo der Code echo 'test1' ist, muss ich mit der neu geladenen neuen Shell weiter konfigurieren.

Gibt es eine Möglichkeit, das automatisch zu tun? Wie start neue Shell parallel oder so ähnlich?

Ubuntu 14.04, bash.

Update:

Zum Beispiel muss ich virsh installieren, aber nach der Installation erfordert es sudo auszuführen. Mein Skript konfiguriert Gruppen zum Hinzufügen von $ USER zur libvirtd-Gruppe. Dann muss ich mich neu anmelden. Ich kann das mit sudo sh -c "exec su $usr" tun. Danach brauche ich das Skript, um die Ausführung fortzusetzen. Gibt es eine Möglichkeit, das zu tun?

+0

Es ist unklar, was Sie zu tun versuchen. Kannst du bitte mehr erklären? – soundslikeodd

+0

Hallo. Ich habe meine Frage aktualisiert. – GALIAF95

Antwort

2

Ändern Sie mit visudo Ihre Sudoers-Konfiguration, so dass Sie nicht mehr nach einem Passwort gefragt werden. Siehe man visudo und man sudoers.

Ich schlage vor, eine heredoc zu verwenden:

echo 'test' 
usr="$USER" 
sudo su - "$USER" << EOF 
echo 'test1' 
EOF 
+0

Scheint zu arbeiten. Also Echo 'Test1' wird in neuer Subshell ausgeführt? Aber ich denke, ich muss die aktuelle Shell mit einem Befehl wie sudo sh -c "exec su $ usr" ändern, um die Umgebung zu aktualisieren. Bitte beachten Sie mein aktuelles Update. – GALIAF95

+0

Es funktioniert. Vielen Dank. – GALIAF95