diff --git a/bash_kernel.py b/bash_kernel.py index e514b4a..631b1a8 100644 --- a/bash_kernel.py +++ b/bash_kernel.py @@ -1,6 +1,5 @@ from IPython.kernel.zmq.kernelbase import Kernel -from pexpect import replwrap -import pexpect +from pexpect import replwrap, EOF import signal from subprocess import check_output @@ -28,6 +27,9 @@ class BashKernel(Kernel): def __init__(self, **kwargs): Kernel.__init__(self, **kwargs) + self._start_bash() + + def _start_bash(self): # Signal handlers are inherited by forked processes, and we can't easily # reset it from the subprocess. Since kernelapp ignores SIGINT except in # message handlers, we need to temporarily reset the SIGINT handler here @@ -52,9 +54,9 @@ class BashKernel(Kernel): interrupted = True self.bashwrapper._expect_prompt() output = self.bashwrapper.child.before - except pexpect.EOF: - # TODO: how do we shut down gracefully here? - output = '' + except EOF: + output = self.bashwrapper.child.before + 'Restarting Bash' + self._start_bash() if not silent: stream_content = {'name': 'stdout', 'data': output}