2016-04-14 6 views
-1

Ich mache den "quit" -Befehl in einem Skript, das wie "exit" funktioniert, aber das laufende Bash-Terminal schließt. Der einzige Weg, ich weiß, wie verlassen zu tun ist:Irgendeine Möglichkeit, Bash Terminal von überall zu beenden, aber nicht ein Skript zu beenden?

exit 

aber das tut nicht gut - es dauert nur ihn als Exit für das Skript, nicht die Bash-Terminalsitzung.

+0

Ist "ctrl-d" zu schwer zu tippen? –

+0

Was? Ich bin verwirrt, Sie können eine Shell verlassen, egal in welchem ​​Verzeichnis Sie sich befinden. Was wollen Sie tun, um einen Befehl zu erstellen, der eine Sitzung beendet, selbst wenn Sie Prozesse im Hintergrund haben? Wenn ja, Mann 'nohup'. Was hat das mit vim zu tun? – SaintHax

+0

Ich mache ein Skript in bash (in vim MODE), wenn ich also den Fehler mache, quit statt exit zu tippen, wird es fast dasselbe tun. –

Antwort

0

Sie können versuchen, den Bash-Prozess zu beenden, indem Sie die Prozess-ID mithilfe des Befehls top und dann kill #ID finden. Dies kann die Bash-Sitzung beenden und das Skript weiterlaufen lassen.

+0

Okay, ich werde das versuchen. –

0

Klingt so, als ob Sie versuchen, ein Skript von der Shell, in der Sie sich befinden, zu trennen. Wenn Sie sich innerhalb des Skripts von der Shell lösen wollen, können Sie es effektiv abzweigen.

#!bin/bash 
forked_function() { 
    # This will now be in it's worn process. Check it using 
    # ps ax | grep forked_function 
    sleep 1000; 
} 
forked_function & 

Ein sehr gängiger Ansatz ist die Verwendung screen. Dies ermöglicht es Ihnen, das Terminal zu close und zu dem laufenden Prozess später wo Sie aufgehört haben zurückzukehren. Wenn alles, was Sie tun wollen, dann ein Skript ausgeführt wird, beenden Sie versuchen, ein kaufmännisches mit an das Skript angehängt Sie dh

script & 
exit 

versuchen, auszuführen, dass Chrome verlassen läuft, aber lassen Sie es lösen sie es nicht schließen wenn Sie das Terminal schließen. Sie können die Aufgaben auch im Hintergrund verwalten. Werfen Sie einen Blick auf man jobs

script & 
jobs 

Sie Befehle wie fg 1 verwenden können Auftragsnummer 1 wieder in den Vordergrund usw.

0

Sie versuchen, diesen Befehl ausführen können bringen, wie Sie ein Shell-proccess waren:

execp("exit",NULL,NULL); 
+0

Okay, ich werde das versuchen. –

Verwandte Themen